Kafka with Spark 2.1 Structured Streaming - 无法反序列化

时间:2017-03-30 06:33:01

标签: apache-spark pyspark deserialization apache-spark-sql spark-streaming

使用Apache Spark 2.1版,我想使用Kafka(0.10.0.2.5)作为带有pyspark的结构化流的源。

在Kafka主题中,我有json消息(使用Streamsets Data Collector推送)。 但是,我无法使用以下代码阅读它:

kafka=spark.readStream.format("kafka") \
.option("kafka.bootstrap.servers","localhost:6667") \
.option("subscribe","mytopic").load()
msg=kafka.selectExpr("CAST(value AS STRING)")
disp=msg.writeStream.outputMode("append").format("console").start()

它会生成此错误:

 java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/ByteArrayDeserializer

我尝试在readStream行添加:

.option("value.serializer","org.common.serialization.StringSerializer")
.option("key.serializer","org.common.serialization.StringSerializer")

但它并没有解决问题。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:6)

实际上我找到了解决方案:我依赖添加了以下jar:

火花流式卡夫卡-0-10-assembly_2.10-2.1.0.jar

(从https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-10-assembly_2.10/2.1.0下载后)