tongchenkeji 发表于:2023-7-2 12:01:490次点击 已关注取消关注 关注 私信 麻烦问下Flink CDC中加个allowNonRestoredState 这个参数, 不会导致?[阿里云实时计算 Flink版] 暂停朗读为您朗读 麻烦问下Flink CDC中加个allowNonRestoredState 这个参数, 不会导致数据从全量开始消费吧? 「点点赞赏,手留余香」 赞赏 还没有人赞赏,快来当第一个赞赏的人吧! 海报 实时计算Flink版# 实时计算 Flink版3179# 流计算2236
Star时光AM 2023-11-27 18:15:34 1 在 Flink CDC 中添加 allowNonRestoredState 参数不会导致数据从全量开始消费。 allowNonRestoredState 参数主要用于处理 Flink 任务重启后由于没有检查点而丢失的状态。具体来说,它会做以下两件事情: 1. 允许恢复时忽略未知的(没有在检查点中保存的)状态。 2. 在状态初始化时,使用 CDC 基于源数据重新计算状态。 通过这两个步骤,即使之前的状态丢失了,重新计算依然可以获得准确的最新状态。因此,不会出现数据重复的问题。 具体的工作流程如下: 1. 在 CDC 任务重启之前,可能已经处理了一部分数据并形成了状态。 2. 由于没有检查点,这部分状态丢失了。 3. 设置了 allowNonRestoredState 参数后,任务重启时会忽略不存在的状态。 4. 然后,通过同步源端的数据重新计算状态。 5. 最终的状态只包含已经消费过的数据,不会有重复的数据。 因此,allowNonRestoredState 参数不会导致数据重复,反而有助于处理之前已经处理过但状态丢失的数据。
算精通AM 2023-11-27 18:15:34 2 允许非恢复状态(allowNonRestoredState)在Flink CDC中,并不会导致数据重复的问题。这个参数主要是用来处理Flink任务重启后,由于没有检查点而丢失的状态。allowNonRestoredState 具体做了以下两件事:允许恢复时忽略未知的(没有在检查点中保存的)状态。当状态被初始化时,使用 CDC 来基于源数据重新计算状态。这两点保证了,即使状态在之前丢失了,通过重新计算也可以获得准确的最新状态。所以数据不会出现重复,具体来说:CDC任务重启前,可能已经有一部分数据处理过了,形成了状态但由于没有检查点,这部分状态丢失了设置 allowNonRestoredState 后,任务重启会忽略不存在的状态然后,通过同步源端数据,来重新计算状态最终的状态只包含已经消费过的数据,不会有重复总的来说,allowNonRestoredState 并不会导致数据重复,反而有助于处理任务曾经处理过但状态丢失的那部分数据。希望以上信息能为你解释清楚此参数功能!如果还有其他问题,欢迎继续交流。
在 Flink CDC 中添加
allowNonRestoredState
参数不会导致数据从全量开始消费。allowNonRestoredState
参数主要用于处理 Flink 任务重启后由于没有检查点而丢失的状态。具体来说,它会做以下两件事情:1. 允许恢复时忽略未知的(没有在检查点中保存的)状态。 2. 在状态初始化时,使用 CDC 基于源数据重新计算状态。
通过这两个步骤,即使之前的状态丢失了,重新计算依然可以获得准确的最新状态。因此,不会出现数据重复的问题。
具体的工作流程如下:
1. 在 CDC 任务重启之前,可能已经处理了一部分数据并形成了状态。 2. 由于没有检查点,这部分状态丢失了。 3. 设置了
allowNonRestoredState
参数后,任务重启时会忽略不存在的状态。 4. 然后,通过同步源端的数据重新计算状态。 5. 最终的状态只包含已经消费过的数据,不会有重复的数据。因此,
allowNonRestoredState
参数不会导致数据重复,反而有助于处理之前已经处理过但状态丢失的数据。允许非恢复状态(allowNonRestoredState)在Flink CDC中,并不会导致数据重复的问题。
这个参数主要是用来处理Flink任务重启后,由于没有检查点而丢失的状态。
allowNonRestoredState 具体做了以下两件事:
允许恢复时忽略未知的(没有在检查点中保存的)状态。
当状态被初始化时,使用 CDC 来基于源数据重新计算状态。
这两点保证了,即使状态在之前丢失了,通过重新计算也可以获得准确的最新状态。
所以数据不会出现重复,具体来说:
CDC任务重启前,可能已经有一部分数据处理过了,形成了状态
但由于没有检查点,这部分状态丢失了
设置 allowNonRestoredState 后,任务重启会忽略不存在的状态
然后,通过同步源端数据,来重新计算状态
最终的状态只包含已经消费过的数据,不会有重复
总的来说,allowNonRestoredState 并不会导致数据重复,反而有助于处理任务曾经处理过但状态丢失的那部分数据。
希望以上信息能为你解释清楚此参数功能!如果还有其他问题,欢迎继续交流。
看你cdc拉取的是全量还是增了,一般这种的的 都已经是实时拉取增量数据了,此回答整理自钉群“Flink CDC 社区”