2. 是我搞错了,是四次,没问题
Qishang <[email protected]> 于2021年3月2日周二 下午6:50写道: > Hi 社区。 > 版本 : Flink 1.12.1 > 在Flink SQL 中调用自定义 UDF,UDF中调用了SDK的方法,复用的字段,发现SDK被重复调用了。 > e.g. > INSERT INTO table_a > SELECT > update_time, > MD5(p_key) AS id, > p_key > FROM > ( > SELECT > LOCALTIMESTAMP AS update_time , > findkeyudf(p_name) AS p_key > FROM table_b > ) T > WHERE COALESCE(p_key, '')<> '' > ; > > == Physical Execution Plan == > Stage 1 : Data Source > content : Source: TableSourceScan(table=[[default_catalog, > default_database, table_b]], fields=[p_name, xxx, ...]) > > Stage 2 : Operator > content : Calc(select=[CAST(()) AS update_date, > CAST(MD5(findkeyudf(p_name))) AS comp_name, findkeyudf(p_name) AS p_key], > where=[(findkeyudf(p_name) IS NOT NULL CASE (CAST(findkeyudf(p_name)) <> > _UTF-16LE'':VARCHAR(2147483647) CHARACTER SET "UTF-16LE") CASE false)]) > ship_strategy : FORWARD > > Stage 3 : Data Sink > content : Sink: Sink(table=[default_catalog.default_database.table_a], > fields=[update_date, comp_name, p_key]) > ship_strategy : FORWARD > > 查看 explain, udf 调用有四次,但是从日志发现同一个Key 执行了 8次。 > > 现在有2个问题: > 1. udf 调用不会被优化成一次,结果复用吗? > 2. 查看 explain,不应该是四次吗,执行了八次有点不理解,没有加 过滤条件( WHERE COALESCE(p_key, '')<> '' > )是执行了2次的。 > 3. 顺便问下,JDBC 维表异步Join的 Feature 有对应的规划吗? > > >
