在 Spark 批处理作业中读取 Kafka 主题

Read Kafka topic in a Spark batch job

我正在编写一个从 Kafka 主题读取的 Spark (v1.6.0) 批处理作业。
为此,我可以使用 org.apache.spark.streaming.kafka.KafkaUtils#createRDD 但是, 我需要为所有分区设置偏移量,还需要将它们存储在某个地方(ZK?HDFS?)以了解从哪里开始下一个批处理作业。

批处理 作业中从 Kafka 读取的正确方法是什么?

我也在考虑编写一个 streaming 作业,它从 auto.offset.reset=smallest 读取并保存检查点 到 HDFS,然后在下一个 运行 中从那里开始。

但在这种情况下,我如何才能只获取一次并在第一批之后停止流式传输

createRDD 是从 kafka 读取批次的正确方法。

要查询有关最新/最早可用偏移量的信息,请查看KafkaCluster.scala 方法getLatestLeaderOffsetsgetEarliestLeaderOffsets。该文件是 private,但在最新版本的 spark 中应该是 public