Spark Structured Streaming Kafka Integration 抵消管理

Spark Structured Streaming Kafka Integration Offset management

文档说:

enable.auto.commit: Kafka source doesn’t commit any offset.

因此我的问题是,如果有工人或分区 crash/restart :

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

这似乎很重要。关于如何处理它的任何指示?

我也运行关注这个问题。

您对 2 个选项的观察是正确的,即

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

然而...

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

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

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

我发现 this useful reference 相同。

希望对您有所帮助!