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

时间:2016-06-25 08:41:33

标签: scala apache-spark apache-kafka spark-streaming kafka-consumer-api

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

批次工作中从Kafka读取的正确方法是什么?

我还在考虑编写流式作业,该作业从auto.offset.reset=smallest读取并保存检查点 到HDFS,然后在下一次运行中从它开始。

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

1 个答案:

答案 0 :(得分:4)

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

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