问题描述
如果我们像这样在 EventHub conf 中指定起始位置:
EventHubsConf(ConnectionStringBuilder(eventHubConnectionString).build)
.setStartingPosition(EventPosition.fromStartOfStream)
or
.setStartingPosition(EventPosition.fromEndOfStream)
并在StreamWriter中指定检查点位置
streamingInputDF
.writeStream
.option("checkpointLocation",checkpointLocation)
...
重新启动后,是否 setStartingPosition
变得无关紧要,因为检查点始终用作开始读取的点?
谢谢。
解决方法
重新启动streamimg查询时将使用检查点文件中存储的偏移量信息。
有趣的是,这在 structured streaming eventhubs integration guide 中没有特别提及,但是,在 DStreams guide 中却是:
“连接器与结构化流检查点机制完全集成。您可以通过在查询中设置检查点位置来恢复查询失败的进度和状态。此检查点位置必须是 HDFS 兼容文件系统中的路径,并且可以在启动查询时设置为 DataStreamWriter 中的一个选项。"
请务必遵循有关 checkpoint recovery 的一般指南。