Подключение приложения Apache Spark с помощью Центров событий Azure с поддержкой KafkaConnect your Apache Spark application with Kafka-enabled Azure Event Hubs

В этом руководстве описывается, как подключить приложение Spark к Центрам событий с поддержкой Kafka для потоковой передачи в режиме реального времени.This tutorial walks you through connecting your Spark application to Kafka-enabled Event Hubs for real-time streaming. Такая интеграция обеспечивает потоковую передачу без необходимости изменять клиенты протокола или запускать собственные кластеры Kafka или Zookeeper.This integration enables streaming without having to change your protocol clients or run your own Kafka or Zookeeper clusters. Для работы с этим руководством требуется Apache Spark v2.4+ и Apache Kafka v2.0+.This tutorial, requires Apache Spark v2.4+ and Apache Kafka v2.0+.

Примечание

Этот пример можно найти на сайте GitHub.This sample is available on GitHub

Из этого руководства вы узнаете, как выполнять следующие задачи:In this tutorial, you learn how to:

  • Создание пространства имен в Центрах событийCreate an Event Hubs namespace
  • Клонирование примера проектаClone the example project
  • Запуск Spark.Run Spark
  • Чтение из Центров событий для Kafka.Read from Event Hubs for Kafka
  • Запись в Центры событий для Kafka.Write to Event Hubs for Kafka

Предварительные требованияPrerequisites

Перед началом работы с данным руководством необходимо выполнить описанные ниже условия.Before you start this tutorial, make sure that you have:

Примечание

Адаптер Spark-Kafka был обновлен для поддержки Kafka v2.0, начиная со Spark v2.4.The Spark-Kafka adapter was updated to support Kafka v2.0 as of Spark v2.4. В предыдущих выпусках Spark адаптер поддерживал Kafka v0.10 и более поздние версии, но в основном как база использовались API Kafka v0.10.In previous releases of Spark, the adapter supported Kafka v0.10 and later but relied specifically on Kafka v0.10 APIs. Так как Центры событий для Kafka не поддерживают Kafka v0.10, адаптеры Spark-Kafka от версий Spark до версии 2.4 не поддерживаются Центрами событий для экосистем Kafka.As Event Hubs for Kafka does not support Kafka v0.10, the Spark-Kafka adapters from versions of Spark prior to v2.4 are not supported by Event Hubs for Kafka Ecosystems.

Создание пространства имен в Центрах событийCreate an Event Hubs namespace

Для отправки и получения данных из любой службы Центров событий требуется пространство имен Центров событий.An Event Hubs namespace is required to send and receive from any Event Hubs service. Инструкции о получении конечной точки Kafka концентраторов событий см. в статье Creating a Kafka enabled Event Hub (Создание концентраторов событий с поддержкой Kafka).See Creating a Kafka enabled Event Hub for instructions on getting an Event Hubs Kafka endpoint. Получите строку подключения Центров событий и полное доменное имя (FQDN) для последующего использования.Get the Event Hubs connection string and fully qualified domain name (FQDN) for later use. Инструкции см. в статье Get an Event Hubs connection string (Получение строки подключения для Центров событий).For instructions, see Get an Event Hubs connection string.

Клонирование примера проектаClone the example project

Клонируйте репозиторий Центров событий Azure и перейдите к вложенной папке tutorials/spark:Clone the Azure Event Hubs repository and navigate to the tutorials/spark subfolder:

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/spark

Чтение из Центров событий для KafkaRead from Event Hubs for Kafka

Внеся несколько изменений в конфигурации, вы сможете запустить чтение из Центров событий для Kafka.With a few configuration changes, you can start reading from Event Hubs for Kafka. Обновите BOOTSTRAP_SERVERS и EH_SASL сведениями о пространстве имен, чтобы запустить потоковую передачу с помощью Центров событий так же, как с Kafka.Update BOOTSTRAP_SERVERS and EH_SASL with details from your namespace and you can start streaming with Event Hubs as you would with Kafka. Чтобы ознакомиться с полным примером кода, просмотрите файл sparkConsumer.scala на сайте GitHub.For the full sample code, see sparkConsumer.scala file on the 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", "false")
    .load()

//Use dataframe like normal (in this example, write to console)
val df_write = df.writeStream
    .outputMode("append")
    .format("console")
    .start()

Запись в Центры событий для Kafka.Write to Event Hubs for Kafka

Вы также можете выполнить запись в Центры событий таким же образом, как и в Kafka.You can also write to Event Hubs the same way you write to Kafka. Обновите конфигурацию, чтобы заменить сведения в BOOTSTRAP_SERVERS и EH_SASL сведениями о пространстве имен в Центре событий.Don't forget to update your configuration to change BOOTSTRAP_SERVERS and EH_SASL with information from your Event Hubs namespace. Чтобы ознакомиться с полным примером кода, просмотрите файл sparkProducer.scala на сайте GitHub.For the full sample code, see sparkProducer.scala file on the 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()

Дополнительная информацияNext steps

В этом руководстве вы узнали, как выполнить потоковую передачу с помощью соединителя Spark-Kafka и Центров событий для Kafka.In this tutorial, you learned how to stream using the Spark-Kafka connector and Event Hubs for Kafka. Вы выполнили следующие шаги:You took the following steps:

  • Создание пространства имен в Центрах событийCreate an Event Hubs namespace
  • Клонирование примера проектаClone the example project
  • Запуск Spark.Run Spark
  • Чтение из Центров событий для Kafka.Read from Event Hubs for Kafka
  • Запись в Центры событий для Kafka.Write to Event Hubs for Kafka

Дополнительные сведения о Центрах событий и Центрах событий для Kafka см. в статьях:To learn more about Event Hubs and Event Hubs for Kafka, see the following topic: