【问题标题】:Read Kafka topic in a Spark batch job在 Spark 批处理作业中读取 Kafka 主题
【发布时间】:2016-10-27 20:30:06
【问题描述】:

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

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

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

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

【问题讨论】:

  • 最好分别提出两个问题。

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


【解决方案1】:

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

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

【讨论】:

  • 感谢火花列表上的回答!你的意思是这些方法给出了如何在后端使用适当的存储实现我的偏移量查找的指南?
  • 不,这些方法用于从 kafka 获取最新的可用偏移量。请参阅github.com/koeninger/kafka-exactly-once/blob/master/src/main/… 以获取从存储中查找已提交偏移量的示例。
  • @CodyKoeninger KafkaCuster 类型在 0.10 版本中不存在。我错过了什么吗?我想批量处理一个主题中的所有现有记录,但是无法从 Kafka 中检索最早和最新的偏移量。
  • @InfinitiesLoop 较新的 kafka 消费者 api 将让您查找主题的开头或结尾以找出最早和最新的偏移量,请参阅kafka.apache.org/0100/javadoc/index.html?org/apache/kafka/…
  • 您是否设法让这些 get 方法适用于 spark 1.6?我遇到了同样的问题,我现在需要查找偏移量以作为“createRDD”中的参数提供
猜你喜欢
  • 1970-01-01
  • 2021-04-22
  • 2021-10-18
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
  • 2018-10-10
  • 2020-06-01
相关资源
最近更新 更多