保存点要求和初步说明

保存点存储两件事:(a)所有数据源的位置,(b)运算符的状态。保存点在许多环境中都很有用:

  • 轻微的应用代码更新
  • Flink 更新
  • 并行性的变化

版本 1.3 开始 (也适用于早期版本):

  • 必须启用检查点才能使保存点成为可能。如果你忘记使用以下方法明确启用检查点:

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.enableCheckpointing(checkpointInterval);
    

    你会得到:

    java.lang.IllegalStateException: Checkpointing disabled. You can enable it via the execution environment of your job
    
  • 在使用窗口操作时,使用事件时间(摄取或处理时间)来产生适当的结果至关重要;

  • 为了能够升级程序并重用保存点,必须设置手动 uid 。这是因为,默认情况下,Flink 在代码更改后更改运算符的 UID;

  • 链式运算符由第一个任务的 ID 标识。无法手动将 ID 分配给中间链接任务,例如在链[a - > b - > c]中,只能手动分配 ID,但不能分配 b 或 c。要解决此问题,你可以手动定义任务链。如果你依赖自动 ID 分配,链接行为的更改也将更改 ID(请参阅上面的点)。

常见问题解答中提供更多信息。