版本:flink1.16.1
pyflink sql在进行多sink插入操作时,因为一个execute_sql()算子只能执行一句sql,我们会使用以下写法.
table_env.execute_sql("""
INSERT INTO test1
SELECT v1.*, udf(v1.a, v1.b, 12) AS uname FROM intermediate_view v1;
""")
table_env.execute_sql("""
INSERT INTO test2
SELECT v2.*, udf(v2.a, v2.b, 12) AS uname FROM intermediate_view v2;
""")
目前这样的写法会使部署的任务变为两个
通过查询flink官方网站 sql 文档后得出下述优化写法,可以把部署的任务变为一个
table_env.execute_sql("""
EXECUTE STATEMENT SET
BEGIN
INSERT INTO test1
SELECT v1.*, geoEncode(v1.a, v1.b, 12) AS uname FROM intermediate_view v1;
INSERT INTO test2
SELECT v2.*, geoEncode(v2.a, v2.b, 12) AS uname FROM intermediate_view v2;
END;
""")