Apache spark 消费者无法打印来自生产者的消息

Apache spark 消费者无法打印来自生产者的消息,apache-spark,pyspark,apache-kafka,spark-streaming,Apache Spark,Pyspark,Apache Kafka,Spark Streaming,好的,我遇到了同样的错误无法在超时时间内连接到zookeeper服务器:10000如果我运行以下命令:spark submit--jars spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver\u-based.py localhost:9092 test2 如果我按照上面帖子的解决方案,将localhost:2181改为localhost:9092,那么现在似乎zookeeper已连接,但我无法使用此命令打印制作人的消息spark

好的,我遇到了同样的错误
无法在超时时间内连接到zookeeper服务器:10000
如果我运行以下命令:
spark submit--jars spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver\u-based.py localhost:9092 test2

如果我按照上面帖子的解决方案,将
localhost:2181
改为
localhost:9092
,那么现在似乎zookeeper已连接,但我无法使用此命令打印制作人的消息
spark submit--jarsspark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver_-based.py localhost:2181 test2
即使我使用以下命令检查来自消费者的消息
kafka-console-Consumer.sh--bootstrap server localhost:9092--topic test2--从一开始
并成功打印出
这是一个消息

所以基本上,我遵循了上面链接中的解决方案,然后我遇到了另一个问题。消费者无法打印来自生产者的消息 以下是创建主题为test2的消息的命令:

echo“这是一条消息”| kafka-console-producer.sh--代理列表localhost:9092--主题test2

这是我的
receiver\u-based.py
文件:

import sys
from pyspark import SparkContext, SparkConf
from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
from uuid import uuid1

if __name__ == "__main__":
    sc = SparkContext(appName="twiiterproject")
    ssc = StreamingContext(sc, 2) # 2 second window

    broker, topic = sys.argv[1:]
    print("Broker: {0}, Topic{1}".format(broker,topic))
    kvs = KafkaUtils.createStream(ssc,
                                  broker,
                                  'raw-event-streaming-consumer',{topic:1})
    lines = kvs.map(lambda x: x[1])
    print("This god damn line alibaba: {0}".format(lines.pprint()))
    counts = lines.flatMap(lambda line: line.split("")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)
    counts.pprint()
    ssc.start()
    ssc.awaitTermination()

你不是在比较同样的行为。仔细阅读文档,您将看到本节

在Kafka参数中,必须指定
metadata.broker.list
bootstrap.servers
默认情况下,它将从每个Kafka分区的最新偏移量开始使用。如果您将卡夫卡参数中的配置
auto.offset.reset
设置为最小,则它将从最小偏移开始消耗

您需要这样做,并且不再使用Zookeeper作为参数

kvs = KafkaUtils.createStream(ssc,
                              topics = [topic],
                              kafkaParams = {"bootstrap.servers": broker, "auto.offset.reset": "smallest"}))
否则,您需要在Spark应用程序启动后运行console producer



注意:从Spark 2.3.0开始,kafka-0-8软件包已被弃用,您可能希望尝试结构化流媒体

你不是在比较同样的行为。仔细阅读文档,您将看到本节

在Kafka参数中,必须指定
metadata.broker.list
bootstrap.servers
默认情况下,它将从每个Kafka分区的最新偏移量开始使用。如果您将卡夫卡参数中的配置
auto.offset.reset
设置为最小,则它将从最小偏移开始消耗

您需要这样做,并且不再使用Zookeeper作为参数

kvs = KafkaUtils.createStream(ssc,
                              topics = [topic],
                              kafkaParams = {"bootstrap.servers": broker, "auto.offset.reset": "smallest"}))
否则,您需要在Spark应用程序启动后运行console producer



注意:从Spark 2.3.0开始,kafka-0-8软件包已被弃用,您可能希望尝试结构化流媒体

您以什么顺序运行这些命令?默认情况下,Spark读取最新偏移量第一次启动时
zookeeper
,然后
kafka服务器
。接下来,我创建了主题和消息。然后,我使用以下命令测试了该消息:kafka-console-consumer.sh--bootstrap server localhost:9092--topic test2--从头开始,它显示了与输入类似的消息。一切都很好。但是当我运行spark submit--jars spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver_-based.py localhost:9092 test2时,消息没有显示。启动spark后你能运行制作人吗?是的,我能,通过使用这个注释
kafka-console-consumer.sh--bootstrap server localhost:9092--topic test2--从一开始
但是当我使用这个命令
spark submit--jars spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver_-based.py localhost:2181 test2
时,消息没有显示出来。您运行这些命令的顺序是什么命令?默认情况下,Spark读取最新偏移量第一次启动时
zookeeper
,然后
kafka服务器
。接下来,我创建了主题和消息。然后,我使用以下命令测试了该消息:kafka-console-consumer.sh--bootstrap server localhost:9092--topic test2--从头开始,它显示了与输入类似的消息。一切都很好。但是当我运行spark submit--jars spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver_-based.py localhost:9092 test2时,消息没有显示。启动spark后你能运行制作人吗?是的,我能,通过使用这个注释
kafka-console-consumer.sh--bootstrap server localhost:9092--topic test2--从一开始
但是当我使用这个命令
spark submit--jars spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver_-based.py localhost:2181 test2
时,消息没有显示出来。谢谢,但是我在尝试使用您的代码时遇到了这个错误。在使用更新的答案后,错误:createStream()缺少1个必需的位置参数:“topics”现在我遇到了错误:createStream()缺少2个必需的位置参数:“zkQuorum”和“groupId”。根据该链接,这些参数不是必需的,但仍然是,在之后发送消息来测试您以前的代码。谢谢,但我在尝试使用您的代码时遇到了此错误
TypeError:createStream()缺少1个必需的位置参数:“topics”
现在我遇到了
TypeError:createStream()在使用更新的答案后,缺少2个必需的位置参数:“zkQuorum”和“groupId”
。根据该链接,这些参数不是必需的,但仍然需要在之后发送消息来测试以前的代码。