Integrieren von Kafka in Spark Structured Streaming

Blog

Integrieren von Kafka in Spark Structured Streaming

Lernen Sie die Methode zur Integration von Kafka mit Spark zum Konsumieren von Streaming-Daten kennen und erfahren Sie, wie Sie Ihre Streaming-Analytics-Anforderungen erfüllen können…



Kafka ist ein Messaging-Broker-System, das die Weitergabe von Nachrichten zwischen Producer und Consumer erleichtert. Auf der anderen Seite verbraucht Spark Structure-Streaming statische und Streaming-Daten aus verschiedenen Quellen (wie Kafka, Flume, Twitter usw.), die mit einem High-Level-Algorithmus für Machine Learning verarbeitet und analysiert werden können, und gibt das Ergebnis nach außen aus Speichersystem. Der Hauptvorteil des strukturierten Streamings besteht darin, dass das Ergebnis kontinuierlich inkrementiert wird, wenn die Streaming-Daten weiterhin ankommen.

Kafka verfügt über eine eigene Stream-Bibliothek und eignet sich am besten für die Transformation von Kafka von Thema zu Thema, während Spark-Streaming in fast jede Art von System integriert werden kann. Für weitere Details können Sie sich darauf beziehen Blog .



In diesem Blog werde ich eine End-to-End-Integration von Kafka mit strukturiertem Spark-Streaming behandeln, indem ich Kafka als Quelle und strukturiertes Spark-Streaming als Senke erstelle.

Lassen Sie uns ein Maven-Projekt erstellen und die folgenden Abhängigkeiten in |_+_| hinzufügen.



pom.xml

Jetzt werden wir einen Kafka-Produzenten erstellen, der Nachrichten produziert und zum Thema pusht. Der Verbraucher wird der strukturierte Streaming-DataFrame von Spark sein.

wie man dmt kauft

Legen Sie zunächst die Eigenschaften für den Kafka-Produzenten fest.

org.apache.spark spark-core_2.11 2.1.1 org.apache.spark spark-sql_2.11 2.1.1 org.apache.kafka kafka-clients 0.10.2.0 org.apache.spark spark-streaming-kafka_2.10 1.6.3
  • |_+_|: Enthält die vollständige Liste der Server mit Hostname und Port. Die Liste sollte die Form |_+_| . haben , und so weiter.

  • |_+_|: Serializer-Klasse für den Schlüssel, der die Serializer-Schnittstelle implementiert.

  • |_+_|: Serializer-Klasse für den Schlüssel, der die Serializer-Schnittstelle implementiert.

Erstellen eines Kafka-Produzenten und Senden des Themas über den Stream:

val props = new Properties() props.put('bootstrap.servers', 'localhost:9092') props.put('key.serializer', 'org.apache.kafka.common.serialization.StringSerializer') props.put('value.serializer', 'org.apache.kafka.common.serialization.StringSerializer')

Das Senden ist asynchron, und diese Methode kehrt sofort zurück, sobald der Datensatz im Puffer der auf das Senden wartenden Datensätze gespeichert wurde. Dies ermöglicht das parallele Senden vieler Datensätze, ohne das Warten auf die Antwort nach jedem einzelnen zu blockieren. Das Ergebnis des Sendens ist ein |_+_| Angabe der Partition, an die der Datensatz gesendet wurde, und des zugewiesenen Offsets. Schließen Sie nach dem Senden der Daten den Producer mit dem |_+_| Methode.

Kafka als Quelle

Jetzt wird Spark ein Verbraucher von Streams sein, die von Kafka produziert werden. Dazu müssen wir eine Spark-Sitzung erstellen.

bootstrap.servers

Dies ist das Abrufen der Themen von Kafka und das Lesen im Spark-Stream, indem ein bestimmtes Thema abonniert wird, das optional bereitgestellt werden soll. Es folgt der Code zum Abonnieren von Kafka-Themen im Spark-Stream und zum Lesen mit |_+_|.

host1: port, host2: port

Drucken des Schemas des DataFrame:

key.serializer

Die Ausgabe für das Schema enthält alle Felder, die sich auf Kafka-Metadaten beziehen.

value.serializer

Erstellen Sie ein Dataset aus DataFrame, indem Sie den Schlüssel und den Wert aus dem Thema in eine Zeichenfolge umwandeln:

val producer = new KafkaProducer[String,String](props) for(count <- 0 to 10) producer.send(new ProducerRecord[String, String](topic, 'title '+count.toString,'data from topic')) println('Message sent successfully') producer.close()

Schreiben Sie die Daten im Datensatz in die Konsole und halten Sie das Programm mit der Methode |_+_| vom Beenden ab:

RecordMetadata

Der komplette Code ist auf meinem GitHub .

Ursprünglich veröffentlicht von Jatin Demla at https://dzone.com

Erfahren Sie mehr

Apache Spark mit Python - Big Data mit PySpark und Spark

Apache Spark 2.0 mit Scala - Big Data zum Anfassen!

Big Data zähmen mit Apache Spark und Python - Hands On!

Apache Spark mit Scala - Lernen Sie Spark von einem Big-Data-Guru

Apache Spark praktische Spezialisierung für Big Data Analytics

Big-Data-Analyse mit Apache Spark Python PySpark

#big-data #apache-funken

dzone.com

Integrieren von Kafka in Spark Structured Streaming

Lernen Sie die Methode zur Integration von Kafka mit Spark zum Konsumieren von Streaming-Daten kennen und erfahren Sie, wie Sie Ihre Streaming-Analyseanforderungen erfüllen können...