Ich bin in einem NoSuchMethodError, wenn ich versuche, Kafka-Integration für Structured Streaming zu verwenden. Der Stack-Trace sieht wie folgt aus, wenn der erste Datensatz zur Verfügung: Verursacht durch: java.lang.NoSuchMethodError:Spark Kafka 0.10 NoSuchMethodError org.apache.kafka.clients.consumer.KafkaConsumer.assign
org.apache.kafka.clients.consumer.KafkaConsumer.assign(Ljava/util/Collection;)V
at org.apache.spark.sql.kafka010.CachedKafkaConsumer.createConsumer(CachedKafkaConsumer.scala:56)
at org.apache.spark.sql.kafka010.CachedKafkaConsumer.<init>(CachedKafkaConsumer.scala:45)
at org.apache.spark.sql.kafka010.CachedKafkaConsumer$.getOrCreate(CachedKafkaConsumer.scala:349)
at org.apache.spark.sql.kafka010.KafkaSourceRDD$$anon$1.<init>(KafkaSourceRDD.scala:137)
at org.apache.spark.sql.kafka010.KafkaSourceRDD.compute(KafkaSourceRDD.scala:136)
at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)
...
Mein sbt diese Abhängigkeiten hat:
libraryDependencies ++= Seq(
scalaTest % Test,
"org.apache.spark" %% "spark-core" % "2.1.0" % "provided",
"org.apache.spark" %% "spark-sql" % "2.1.0" % "provided",
"org.apache.spark" %% "spark-sql-kafka-0-10" % "2.1.0" % "provided",
"org.apache.hadoop" % "hadoop-client" % "2.6.0" % "provided"
)
und Scala Version ist 2.11 .8.
Ich bin in der Lage, Spark-Anwendungen für Dataframe auszuführen. Es ist nur die Kafka-Integration, die mir diesen Fehler gibt. Der strukturierte Streaming-Code ist nur das Beispiel von Dokumentation here:
val ds1 = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "data01:9092,data02:9092,data03:9092")
.option("subscribe", "cluster-topic-01")
.load()
val ds2 = ds1.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")
val query = ds2.writeStream
.format("console")
.start()
query.awaitTermination()
Jede Beratung, wo ich das Problem suchen? TIA
Danke für den Tipp. –
Ich habe vergessen zu erwähnen, dass der Fehler von einem Cloudera Garn Cluster ist und ein Flume wie folgt installiert ist: /usr/lib/flume-ng/lib/kafka-clients-0.9.0-kafka-2.0.2. jar /usr/lib/flume-ng/lib/kafka_2.10-0.9.0-kafka-2.0.2.jar Funken 2.1.0 diese Zeile in conf hat/spark-env.sh SPARK_DIST_CLASSPATH = "$ SPARK_DIST_CLASSPATH:/usr/lib/flume-ng/lib/* " was die Ursache ist. Ich habe eine Hadoop-Client-Maschine, die Flume nicht installiert hat und es funktioniert einwandfrei. Kommentieren Sie jetzt die Zeile in spark-env.sh, lassen Sie mich auch meine strukturierten Streaming auf Garn laufen. –
Yup, es ist immer so etwas mit diesen 'Fehler' in Spark wie 'NoSuchMethodError' und' NoClassDefFoundError'. Schön, dass Sie das Problem gefunden haben. Viel Glück bei Ihrem Projekt! Ein upvote würde geschätzt werden. – Vidya