火花版本= 2.3.0
Kafka版本= 1.0.0
正在使用的代码片段:
# Kafka Enpoints
zkQuorum = '192.168.2.10:2181,192.168.2.12:2181'
topic = 'Test_topic'
# Create a kafka Stream
kafkaStream = KafkaUtils.createStream(ssc, zkQuorum, "cyd-demo-azureactivity-streaming-consumer", {topic: 1})
当Kafka流实时运行时,我会看到火花提取数据,但是,如果我在Spark之前一个小时启动Kafka,则它将不会提取小时的数据。
这是预期的还是有办法在配置中进行设置?
使用以下代码运行代码:
sudo $SPARK_HOME/spark-submit --master local[2] --jars /home/steven/jars/elasticsearch-hadoop-6.3.2.jar,/home/steven/jars/spark-streaming-kafka-0-8-assembly_2.11-2.3.1.jar /home/steven/code/demo/test.py
答案 0 :(得分:3)
如果始终需要从头开始提取数据,则需要将kafka属性“ auto.offset.reset
”设置为“ earliest
”。这将从一开始就提取记录。
此参数是Kafka使用者配置-http://kafka.apache.org/documentation.html#newconsumerconfigs
参考链接-https://spark.apache.org/docs/2.3.0/streaming-kafka-0-10-integration.html
createStream有多种实现。您可以使用其中可以传递kafka配置的实现。 创建Stream的示例代码-
val kafkaParams = Map(
"zookeeper.connect" -> "zookeeper1:2181",
"group.id" -> "spark-streaming-test",
"auto.offset.reset" -> "earliet"
)
val inputTopic = "input-topic"
val stream = KafkaUtils.createStream(ssc, kafkaParams, Map(inputTopic-> 1), StorageLevel.MEMORY_ONLY_SER)