簡體   English   中英

如何在PySpark中創建kafka流?

[英]How to create a kafka stream in PySpark?

我正在嘗試創建一個kafka流,然后對其進行一些轉換,但是看來我創建的流為null。 我將文本文件加載到生產者中,然后通過消費者使用它,它可以正常工作,但不會創建kafka流。 輸入文本文件如下所示,包含36000個條目:

10.000000
26.000000
-8.000000
-28.000000
...

我的python代碼是:

sc = SparkContext(appName="STALTA")
ssc = StreamingContext(sc, 2)
broker, topic = sys.argv[1:]
kvs = KafkaUtils.createStream(ssc, broker, "raw-event-streaming-consumer",{topic:1})
rdd = kvs.flatMap(lambda line: line.strip().split("\n")).map(lambda strelem: float(strelem))
print("****** ", rdd.count())
ssc.start()
ssc.awaitTermination()

rdd.count()應該顯示36000,但它為空。

我用來運行腳本的命令如下:

bin/spark-submit --jars jars/spark-streaming-kafka-0-8-assembly_2.11-2.3.1.jar examples/src/main/python/streaming/sparkkafka.py localhost:2181 consumer6

我也嘗試了localhost:9092,但是沒有用。

你知道我在做什么嗎? 謝謝。

我認為您應該將代理更改為zookeeper IP,通常是localhost:2181因為它需要zookeeper IP而不是kafka IP。

對於打印DStream的問題,您可以直接使用kvs.pprint()打印,通常它會像rdd的tupple一樣打印。 不要使用sparkstreaming無法識別為輸出命令的print()來獲取這些錯誤。

Error : java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing to execute

希望這會幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM