我试图将kafka的csv文件发送到火花流媒体应用程序,我不知道该怎么做。我在这里看过很多帖子,但没有人帮助我。
我希望我的kafka制作人发送csv并稍后在应用程序(消费者)中将其拆分,但这并不重要。我试图创建一个RDD并将其发送给spark。 这适用于普通的字符串消息,但它不适用于csv 。
这是我的制片人:
message =sc.textFile("/home/guest/host/Seeds.csv")
producer.send('test', message)
我的火花消费者:
ssc = StreamingContext(sc, 5)
kvs = KafkaUtils.createStream(ssc, "localhost:2181", "spark-streaming-consumer", {'test': 1})
data = kvs.map(lambda x: x[1])
counts = data.flatMap(lambda line: line.split(";")) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a+b)
问题在于,通过发送csv,火花流不会收到任何事件。 有人可以帮我提供格式或概念吗?
我在一个带有python的笔记本中运行生产者和消费者在docker容器下运行。
谢谢。
答案 0 :(得分:1)
在你的制作人中,message是一个RDD(跨群集分布的csv文件行的集合),它被懒惰地评估,即在你对它执行操作之前它不会做任何事情。所以你需要在发送给Kafka之前收集RDD。 请看下面的链接。 how to properly use pyspark to send data to kafka broker?