![](/img/trans.png)
[英]How to programmatically load and stream Kafka topic to a PySpark Dataframe
[英]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.