flinkcdc 在动态增加表的时候 为什么一定要加allowNonRestoredState ?[阿里云实时计算 Flink版]

flinkcdc 在动态增加表的时候 为什么一定要加allowNonRestoredState 这个参数啊?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 在 Flink CDC 中,当动态增加表时,需要使用 allowNonRestoredState 参数的原因是为了允许未恢复的状态。

    Flink CDC 使用 Flink 的状态后端来管理和存储 CDC 的状态信息。当您增加新的表时,需要为新表创建对应的状态。如果没有启用 allowNonRestoredState 参数,Flink CDC 可能无法找到相应的状态而无法正常工作。

    通过启用 allowNonRestoredState 参数,您可以允许 Flink CDC 在运行时动态增加表,并为新表创建相应的状态。这样就可以实现在不重启 Flink 作业的情况下热加载新表,而无需重新提交 Flink 作业。

    请注意,allowNonRestoredState 参数的使用需要谨慎。在启用此参数时,要确保 Flink 的状态后端能够正确地处理和管理未恢复的状态。同时,还需要确保新增表的数据源和目标的正确配置,以确保数据同步的准确性和一致性。

  2. 针对第一个问题,如果您指的是 Flink 中的某个参数没有开启,需要了解该参数的含义和作用,以确定它应该在哪个节点进行配置。
    在 Flink 中,有些参数是全局参数,需要在 JobManager 上配置;有些参数则是针对每个 TaskManager 的,需要在 TaskManager 上配置。此外,还有一些参数是作业级别的,需要在作业提交时进行配置。
    如果您不确定某个参数应该在哪个节点进行配置,可以参考 Flink 的官方文档和社区资源,查找相关的配置指南和最佳实践。
    针对第二个问题,当您使用 Flink CDC 动态增加表时,需要开启 allowNonRestoredState 参数的原因是,Flink CDC 会使用 Flink 的状态后端来存储和管理 CDC 的状态信息。当您增加新的表时,需要在状态后端中为新表创建对应的状态,以便 Flink CDC 可以正确地捕获和同步该表的变更数据。
    如果在增加新表时不开启 allowNonRestoredState 参数,Flink CDC 可能会因为找不到相应的状态而无法正常工作。开启 allowNonRe

  3. 因为不增加就要重新提交flink job,这个参数就是为了热加载 监听,此回答整理自钉群“Flink CDC 社区”