hi,Community:
我们目前使用的是 flink 1.9.1 执行 SQL 任务,主要使用了以下几种接口: 1. sqlQuery sqlUpdate: 执行表的创建、查找和写入 2. toAppendStream/toRetractStream:将表转换为流后,通过 DataStream.addSink(new RichSinkFunction )写入 3. registerDataStream:将流注册为表,下一步使用 sqlQuery/sqlUpdate 读写该表 最后通过 env.execute() 或者 tableEnv.execute() 执行:通过 RichSinkFunction.invoke 或者 sqlUpdate(DML) 更新到存储,这两种输出形式都可能多次调用。 看到文档里,这部分接口 [1][2] 的行为有些变化,实际使用1.11后,有几处困惑想请教: 1. 如果预期混用 SQL/DataStream 的接口,我目前按照3里的介绍,使用 sqlUpdate,然后通过 tEnv.execute() 来输出。具体的,程序设置两个输出,分别是 RichSinkFunction.invoke 以及 sqlUpdate,观察到只有 sqlUpdate 更新了数据,RichSinkFunction 没有执行。如果希望同时输出的话,是必须将 RichSinkFunction.invoke 的部分也都实现为 StreamTableSink 么,是否有其他成本较低的迁移方式?如果按照 1.11 区分 env/tableEnv 的思路,这种情况怎么实现更加合理? 2. 对于这种情况,env.getExecutionPlan 获取的只是调用 DataStream 接口的 DAG 图,如果要获取 Table 操作流程的 DAG,应该通过 tableEnv 的哪个接口获取? 1. https://ci.apache.org/projects/flink/flink-docs-release-1.11/release-notes/flink-1.11.html#corrected-execution-behavior-of-tableenvironmentexecute-and-streamtableenvironmentexecute-flink-16363 2. https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=134745878 3. https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/common.html#translate-and-execute-a-query |
通过 Table 操作流程的 DAG 现在不再会缓存到底层的 exec env 中,为了避免 transformations
污染,所以是拿不到的,但是内部代码我们仍然是先拼接 StreamGraph 然后直接通过 exec env 提交。 izual <[hidden email]> 于2020年10月30日周五 下午5:04写道: > hi,Community: > > > 我们目前使用的是 flink 1.9.1 执行 SQL 任务,主要使用了以下几种接口: > 1. sqlQuery sqlUpdate: 执行表的创建、查找和写入 > 2. toAppendStream/toRetractStream:将表转换为流后,通过 DataStream.addSink(new > RichSinkFunction )写入 > 3. registerDataStream:将流注册为表,下一步使用 sqlQuery/sqlUpdate 读写该表 > > > 最后通过 env.execute() 或者 tableEnv.execute() 执行:通过 RichSinkFunction.invoke 或者 > sqlUpdate(DML) 更新到存储,这两种输出形式都可能多次调用。 > > > 看到文档里,这部分接口 [1][2] 的行为有些变化,实际使用1.11后,有几处困惑想请教: > > > 1. 如果预期混用 SQL/DataStream 的接口,我目前按照3里的介绍,使用 sqlUpdate,然后通过 tEnv.execute() > 来输出。具体的,程序设置两个输出,分别是 RichSinkFunction.invoke 以及 sqlUpdate,观察到只有 sqlUpdate > 更新了数据,RichSinkFunction 没有执行。如果希望同时输出的话,是必须将 RichSinkFunction.invoke > 的部分也都实现为 StreamTableSink 么,是否有其他成本较低的迁移方式?如果按照 1.11 区分 env/tableEnv > 的思路,这种情况怎么实现更加合理? > 2. 对于这种情况,env.getExecutionPlan 获取的只是调用 DataStream 接口的 DAG 图,如果要获取 Table > 操作流程的 DAG,应该通过 tableEnv 的哪个接口获取? > > > 1. > https://ci.apache.org/projects/flink/flink-docs-release-1.11/release-notes/flink-1.11.html#corrected-execution-behavior-of-tableenvironmentexecute-and-streamtableenvironmentexecute-flink-16363 > 2. > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=134745878 > 3. > https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/common.html#translate-and-execute-a-query > > |
In reply to this post by ying
关于1.11 获取执行计划,我向社区提了一个issue:
https://issues.apache.org/jira/browse/FLINK-19687,我觉得这个应该是需要支持的,可以关注下 izual <[hidden email]> 于2020年10月30日周五 下午5:04写道: > hi,Community: > > > 我们目前使用的是 flink 1.9.1 执行 SQL 任务,主要使用了以下几种接口: > 1. sqlQuery sqlUpdate: 执行表的创建、查找和写入 > 2. toAppendStream/toRetractStream:将表转换为流后,通过 DataStream.addSink(new > RichSinkFunction )写入 > 3. registerDataStream:将流注册为表,下一步使用 sqlQuery/sqlUpdate 读写该表 > > > 最后通过 env.execute() 或者 tableEnv.execute() 执行:通过 RichSinkFunction.invoke 或者 > sqlUpdate(DML) 更新到存储,这两种输出形式都可能多次调用。 > > > 看到文档里,这部分接口 [1][2] 的行为有些变化,实际使用1.11后,有几处困惑想请教: > > > 1. 如果预期混用 SQL/DataStream 的接口,我目前按照3里的介绍,使用 sqlUpdate,然后通过 tEnv.execute() > 来输出。具体的,程序设置两个输出,分别是 RichSinkFunction.invoke 以及 sqlUpdate,观察到只有 sqlUpdate > 更新了数据,RichSinkFunction 没有执行。如果希望同时输出的话,是必须将 RichSinkFunction.invoke > 的部分也都实现为 StreamTableSink 么,是否有其他成本较低的迁移方式?如果按照 1.11 区分 env/tableEnv > 的思路,这种情况怎么实现更加合理? > 2. 对于这种情况,env.getExecutionPlan 获取的只是调用 DataStream 接口的 DAG 图,如果要获取 Table > 操作流程的 DAG,应该通过 tableEnv 的哪个接口获取? > > > 1. > https://ci.apache.org/projects/flink/flink-docs-release-1.11/release-notes/flink-1.11.html#corrected-execution-behavior-of-tableenvironmentexecute-and-streamtableenvironmentexecute-flink-16363 > 2. > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=134745878 > 3. > https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/common.html#translate-and-execute-a-query > > |
Free forum by Nabble | Edit this page |