无法使用Spark Streaming从Kafka主题读取数据

时间:2019-05-26 17:41:19

标签: apache-spark apache-kafka spark-streaming-kafka kafka-topic

我正在尝试使用Spark Streaming从kafka主题中读取数据。我能够将消息生成到kafka主题中,但是在使用Spark Streaming从主题中读取数据时,却收到如下所示的错误消息:

ERROR ReceiverTracker: Deregistered receiver for stream 0: Error starting receiver 0 - java.lang.ClassCastException: java.util.HashMap cannot be cast to java.lang.String

下面是代码:

from pyspark import SparkConf, SparkContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
import pprint

conf= SparkConf().setAppName(“streaming test”).setMaster(“yarn-client”)
sc=SparkContext(conf=conf)
ssc=StreamingContext(sc,10)

topic = “newone”
broker = {“metadata.broker.list”: “URL”}
direct = KafkaUtils.createStream(ssc,broker,“test”,{topic:1})

direct.pprint()
ssc.start()
ssc.awaitTermination()

1 个答案:

答案 0 :(得分:1)

DStream上的输出操作

  

print()-在打印机中打印每批数据的前十个元素   运行流应用程序的驱动程序节点上的DStream。这是   对于开发和调试很有用。 Python API这称为   Python API中的pprint()。

java.util.Hashmap出现在消息中,即InputDStream[ConsumerRecord[K, V]]要打印,而java.lang.ClassCastException

您必须解析消息并像this ...那样打印它

 direct.transform(...).map(lambda ...)

此处的示例:tests.py