我们正在部署一个新的Flink流处理作业,它的状态(存储(需要用历史数据初始化,并且在开始处理任何新的应用程序事件之前,这些数据应该在状态存储中可用。我们不想为了加载历史数据而大幅修改Flink作业。我们考虑编写另一个单独的Flink作业来处理历史数据,更新其状态存储并创建一个保存点,并使用该保存点初始化主Flink作业中的状态。状态处理器API似乎只适用于数据集API,并且想知道任何替代解决方案。谢谢
状态处理器API是一个很好的解决方案。它提供了一种保存点连接器,您可以在DataSet作业中使用它来读取/修改/更新您在DataStream作业中使用的保存点。
为您的工作支持-preload
模式是一个非常简单的更改(绝对不是"重要的"(,在该模式中,非历史数据源将被空/非终止源所取代。我通常使用计数器来决定状态何时已完全填充,然后使用保存点停止,然后在不使用-preload
选项的情况下重新启动。