Spark结构化流Kafka集成偏移管理

时间:2018-09-15 08:16:47

标签: scala apache-spark spark-structured-streaming

文档说:

  

enable.auto.commit:Kafka源代码没有任何偏移量。

因此,我的问题是,在工作程序或分区崩溃/重新启动的情况下:

  1. startingOffsets设置为最新,我们如何不丢失消息?
  2. startingOffsets设置为最早,我们如何不重新处理所有消息?

这似乎很重要。有什么迹象表明如何处理吗?

1 个答案:

答案 0 :(得分:1)

我也遇到了这个问题。

您对这两个选项的看法正确,即

  • 如果startingOffsets设置为latest,则可能会丢失数据
  • 如果startingOffsets设置为earliest,则重复数据

但是...

可以通过添加以下选项来选择检查点:

.writeStream .<something else> .option("checkpointLocation", "path/to/HDFS/dir") .<something else>

如果发生故障,Spark将遍历此检查点目录的内容,并在接受任何新数据之前恢复状态。

我在同一地方找到了this useful reference

希望这会有所帮助!