Apache flink 如何在Flink表API中向运算符添加uid?

Apache flink 如何在Flink表API中向运算符添加uid?,apache-flink,flink-sql,Apache Flink,Flink Sql,正如文档强烈建议的那样,我想在Flink中将UID添加到我的操作符中,以便保存指向。我的工作使用表API。我在文档中没有找到如何使用SQL查询向运算符添加UID 我的代码如下所示: StreamExecutionEnvironment env = ...; StreamTableEnvironment tEnv = TableEnvironment.getTableEnvironment(env); Table table = tEnv.sqlQuery("SELECT * FROM mytab

正如文档强烈建议的那样,我想在Flink中将UID添加到我的操作符中,以便保存指向。我的工作使用表API。我在文档中没有找到如何使用SQL查询向运算符添加UID

我的代码如下所示:

StreamExecutionEnvironment env = ...;
StreamTableEnvironment tEnv = TableEnvironment.getTableEnvironment(env);
Table table = tEnv.sqlQuery("SELECT * FROM mytable GROUP BY TUMBLE(col1, INTERVAL '10' SECOND));
tEnv.writeToSink(table, someSink, qConfig);
如果我的理解是正确的,翻滚窗口是一个内部操作符状态。因此,我想为它分配一个特定的uid,以防止自动生成的id可能引起的一些问题。正确的方法是什么


我正在运行Flink v1.6.2

表API不允许您为操作员设置uid。问题是,如果使用不同的版本编译SQL查询,它可能会导致不同的执行计划。因此,如果您的计划完全改变,那么设置UID是没有帮助的。目前,为SQL查询提供向后兼容性实际上是不可能的。

是否仍有自动生成的id?用例:我有一个1小时翻滚的查询。我在30分钟后用保存点取消作业。假设我没有更改查询,也没有更改Flink版本(即,查询计划相同),5分钟后,我通过保存点路径再次启动作业。从保存点加载的状态是否包括已通过的30分钟翻滚?或者SQL查询中的状态是否完全作为Flink内部的一部分从保存点中排除?