好的,如果我运行以下命令,则会遇到相同的错误 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
答案 0 :(得分:0)
您没有比较相同的行为。仔细阅读文档 ,您会看到此部分。
在Kafka参数中,您必须指定
metadata.broker.list
或bootstrap.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软件包,而您可能想尝试使用结构化流。