Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tutorial orienta você na conexão de seu aplicativo Spark a Hubs de Eventos para streaming em tempo real. Esta integração ativa a transmissão em fluxo sem que seja necessário alterar os clientes de protocolo ou executar os seus próprios clusters do Kafka ou do Zookeeper. Este tutorial requer o Apache Spark v2.4+ e o Apache Kafka v2.0+.
Observação
Este exemplo está disponível no GitHub
Neste tutorial, você aprenderá a:
- Criar um namespace de Hubs de Eventos
- Clonar o projeto de exemplo
- Executar o Spark
- Leia a partir de Hubs de Eventos para Kafka
- Escrever em Hubs de Eventos para Kafka
Pré-requisitos
Antes de iniciar este tutorial, certifique-se de que tem:
- Subscrição do Azure. Se não tiveres uma, cria uma conta gratuita.
- Apache Spark v2.4
- Apache Kafka v2.0
- Git
Observação
O adaptador Spark-Kafka foi atualizado para suportar Kafka v2.0 a partir do Spark v2.4. Em versões anteriores do Spark, o adaptador suportava Kafka v0.10 e posteriores, mas dependia especificamente de APIs Kafka v0.10. Como os Hubs de Eventos para Kafka não suportam Kafka v0.10, os adaptadores de Spark-Kafka das versões do Spark anteriores à v2.4 não são suportados pelos Hubs de Eventos para Ecossistemas Kafka.
Criar um namespace de Hubs de Eventos
É necessário um namespace do Event Hubs para enviar e receber de qualquer serviço do Event Hubs. Consulte Criando um hub de eventos para obter instruções sobre como criar um namespace e um hub de eventos. Obtenha a cadeia de ligação dos Hubs de Eventos e o nome de domínio completamente qualificado (FQDN), para utilizar mais tarde. Para obter instruções, veja Get an Event Hubs connection string (Obter uma cadeia de ligação dos Hubs de Eventos).
Clonar o projeto de exemplo
Clone o repositório de Hubs de Eventos do Azure e navegue até a subpasta tutorials/spark
:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/spark
Leia a partir de Hubs de Eventos para Kafka
Com algumas alterações de configuração, você pode começar a ler a partir de Hubs de Eventos para Kafka. Atualize BOOTSTRAP_SERVERS e EH_SASL com os detalhes do seu namespace, para começar a transmissão com Event Hubs tal como faria com Kafka. Para obter o código de exemplo completo, consulte o arquivo sparkConsumer.scala no GitHub.
//Read from your Event Hub!
val df = spark.readStream
.format("kafka")
.option("subscribe", TOPIC)
.option("kafka.bootstrap.servers", BOOTSTRAP_SERVERS)
.option("kafka.sasl.mechanism", "PLAIN")
.option("kafka.security.protocol", "SASL_SSL")
.option("kafka.sasl.jaas.config", EH_SASL)
.option("kafka.request.timeout.ms", "60000")
.option("kafka.session.timeout.ms", "30000")
.option("kafka.group.id", GROUP_ID)
.option("failOnDataLoss", "true")
.load()
//Use dataframe like normal (in this example, write to console)
val df_write = df.writeStream
.outputMode("append")
.format("console")
.start()
Se receber um erro semelhante ao seguinte, adicione .option("spark.streaming.kafka.allowNonConsecutiveOffsets", "true")
à chamada spark.readStream
e tente novamente.
IllegalArgumentException: requirement failed: Got wrong record for <spark job name> even after seeking to offset 4216 got offset 4217 instead. If this is a compacted topic, consider enabling spark.streaming.kafka.allowNonConsecutiveOffsets
Escrever em Hubs de Eventos para Kafka
Você também pode escrever em Hubs de Eventos da mesma forma que escreve em Kafka. Não se esqueça de atualizar sua configuração para alterar BOOTSTRAP_SERVERS e EH_SASL com informações do namespace dos Hubs de Eventos. Para obter o código de exemplo completo, consulte o arquivo sparkProducer.scala no GitHub.
df = /**Dataframe**/
//Write to your Event Hub!
df.writeStream
.format("kafka")
.option("topic", TOPIC)
.option("kafka.bootstrap.servers", BOOTSTRAP_SERVERS)
.option("kafka.sasl.mechanism", "PLAIN")
.option("kafka.security.protocol", "SASL_SSL")
.option("kafka.sasl.jaas.config", EH_SASL)
.option("checkpointLocation", "./checkpoint")
.start()
Próximos passos
Para saber mais sobre Hubs de Eventos e Hubs de Eventos para Kafka, consulte os seguintes artigos:
- Replicar um broker Kafka num hub de eventos
- Conectar o Apache Flink a um hub de eventos
- Integre o Kafka Connect com um hub de eventos
- Explore samples on our GitHub (Explorar exemplos no nosso GitHub)
- Conecte o Akka Streams a um hub de eventos
- Guia do desenvolvedor do Apache Kafka para Hubs de Eventos do Azure