我正在编写Spark(v1.6.0)批处理作业,该作业从Kafka主题中读取。
为此,我可以使用org.apache.spark.streaming.kafka.KafkaUtils#createRDD
但是,
我需要为所有分区设置偏移量,还需要将它们存储在某处(ZK?HDFS?),以了解从哪里开始下一个批处理作业。
在批次工作中从Kafka读取的正确方法是什么?
我还在考虑编写流式作业,该作业从auto.offset.reset=smallest
读取并保存检查点
到HDFS,然后在下一次运行中从它开始。
但在这种情况下,如何才能获取一次并在第一批之后停止流式传输?
答案 0 :(得分:4)
createRDD
是从kafka读取批次的正确方法。
要查询有关最新/最早可用偏移的信息,请查看KafkaCluster.scala
方法getLatestLeaderOffsets
和getEarliestLeaderOffsets
。该文件为private
,但在最新版本的spark中应为public
。