Flink这种是正常的吗?

我们现在有一个正在运行的flinkSQL作业,作业中涉及对源表A、B、C的全量和增量计算成结果表X、Y,现在需要对作业进行了修改,增加一个结果表Z,就变成了对源表A、B、C的全量和增量计算成结果表X、Y、Z。如果把作业修改后有状态重新启动,结果表Z不会有全量和增量的数据,Flink这种是正常的吗?

展开
收起
三分钟热度的鱼 2023-09-04 21:01:56 68 分享 版权
1 条回答
写回答
取消 提交回答
  • 在Flink中,如果您对作业进行了修改并重新启动,结果表Z不会自动包含之前的全量和增量数据。这是Flink的正常行为。

    Flink的状态是与作业绑定的,并且在作业被修改后重新启动时,之前的状态将被清空。这意味着重新启动后,结果表Z将从空状态开始计算,并且只包含重新启动后的计算结果。

    如果您希望结果表Z包含之前的全量和增量数据,您可能需要采取以下一种或多种解决方案:

    使用外部存储:将结果表Z的数据存储在外部存储系统(如数据库、文件系统等),并在作业重新启动时,从外部存储加载之前的数据到结果表Z。这样可以确保结果表Z包含了之前的全量和增量数据。

    持久化状态:通过使用Flink的状态后端来持久化结果表Z的状态。当作业重新启动时,可以从状态后端中加载之前的状态数据,以恢复结果表Z的全量和增量数据。

    数据重播:如果源表A、B、C的数据可以重新播放,您可以通过将源表A、B、C的数据重新发送到作业中,以重新计算结果表X、Y、Z的全量和增量数据。

    请根据您的具体需求和系统架构选择适合的解决方案,并确保对数据一致性和正确性进行适当的处理。

    2023-09-28 14:24:56
    赞同 展开评论

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

还有其他疑问?
咨询AI助理