1

我正在尝试使用火花流从 kafka 主题中读取数据。我能够将消息生成到 kafka 主题中,但是在使用 spark 流从主题中读取数据时,我收到如下错误消息:

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()
4

1 回答 1

1

DStreams 上的输出操作

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

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

你必须解析消息并像这样打印它......

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

这里的例子:tests.py

于 2019-05-26T18:13:09.947 回答