Wie behebt man "java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord" in Spark Streaming Kafka Consumer?

8
  • Spark 2.0.0
  • Apache Kafka 0.10.1.0
  • scala 2.11.8

Wenn ich Spark-Streaming und Kafka-Integration mit Kafka-Broker-Version 0.10.1.0 mit dem folgenden Scala-Code schlägt es mit folgender Ausnahme fehl:

%Vor%

Warum? Wie man es repariert?

Code:

%Vor%

Ausnahme:

%Vor%     
Chenghao Lv 13.11.2016, 05:26
quelle

2 Antworten

8

Das Consumer-Datensatzobjekt wird von Dstream empfangen. Wenn Sie versuchen, es zu drucken, gibt es einen Fehler, da das Objekt nicht serailisierbar ist. Stattdessen sollten Sie Werte vom ConsumerRecord-Objekt abrufen und es drucken.

anstelle von stream.print (), do:

%Vor%

Dies sollte Ihr Problem lösen.

    
Naveen Sachar 01.12.2016, 13:08
quelle
1

KafkaUtils.createDirectStream wird als org.apache.spark.streaming.dstream.DStream erstellt. Es ist keine RDD. Spark Streaming wird RDDs temporär erstellen, während es läuft. Um eine RDD abzurufen, verwenden Sie stream.foreach (), um die RDD und dann RDD.foreach abzurufen, um jedes Objekt in der RDD abzurufen. Dies sind Kafka ConsumerRecords, von denen Sie die Methode value () verwenden, um die Nachricht aus dem Kafka-Thema zu lesen:

%Vor%     
Walker Rowe 11.06.2017 16:56
quelle