消费者无法打印出生产者的消息

时间:2019-12-15 06:59:29

标签: apache-spark pyspark apache-kafka spark-streaming

好的,如果我运行以下命令,则会遇到相同的错误 Unable to connect to zookeeper server within timeout: 10000 spark-submit --jars spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver_based.py localhost:9092 test2

如果我按照上面的帖子中的解决方法,更改了localhost:2181而不是localhost:9092,那么看来现在 zookeeper 已连接,但我无法打印出即使我使用此命令spark-submit --jars spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar receiver_based.py localhost:2181 test2检查了来自 Consumer 的消息,但仍成功打印了{{1 }}。

因此,基本上,我按照上面链接中的解决方案进行操作,然后遇到另一个问题。 消费者无法打印出来自生产者

的消息

以下是用于创建主题为test2的消息的命令:

kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test2 --from-beginning

这是我的This is a message文件:

echo "This is a message" | kafka-console-producer.sh --broker-list localhost:9092 --topic test2

1 个答案:

答案 0 :(得分:0)

您没有比较相同的行为。仔细阅读文档 ,您会看到此部分。

  

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

您需要执行此操作,并且不再使用Zookeeper作为参数。

kvs = KafkaUtils.createStream(ssc,
                              topics = [topic],
                              kafkaParams = {"bootstrap.servers": broker, "auto.offset.reset": "smallest"}))

否则,您需要 Spark应用程序启动后运行控制台生产器


注意:从Spark 2.3.0开始不推荐使用kafka-0-8软件包,而您可能想尝试使用结构化流。