Flink UDF注意幂等性,防止重复调用时出问题

编写Flink UDF 要注意幂等性,尤其不能直接修改入参!理论上是一条数据只会执行一次UDF,但是实际执行过程中可能会对一条数据执行多次UDF,引起意想不到的问题。

例如有如下SQL:

CREATE VIEW tmp_view AS

SELECT a.id AS id

, my_udf_1(

myudf_2(a.v) AS v

FROM table_a a

LEFT OUTER JOIN table_b FOR SYSTEM_TIME AS OF a.proctime b

ON a.id = b.key

;

INSERT INTO table_c

SELECT id

, v

FROM tmp_view

;

正常my_udf_2确实只会执行一次,但如果sql变一下,最后INSERT那里加入一个where条件,UDF就会下推到Where条件中再执行一次:

这个时候如果UDF不能保证幂等性,计算结果就会出错。例如入参是个List,第一次执行UDF时改了传入的List中的数据,第二次UDF执行时会在第一次执行的基础上再次改变传入的List中的数据,结果就不正确了!

参考:

Flink SQL UDF重复调用问题解决方案-腾讯云开发者社区-腾讯云

相关推荐
大大大大晴天20 小时前
深入解析 Flink Kafka Connector:原理、配置与最佳实践
flink
大大大大晴天2 天前
Hudi技术内幕:RecordPayload到RecordMerger
大数据
SelectDB2 天前
秒级弹性、最高降本 70%:SelectDB Serverless 如何重塑云数仓资源效率
大数据·后端·云原生
WhoAmI2 天前
MapReduce框架原理解析一:InputFormat
大数据·hadoop
WhoAmI2 天前
MapReduce框架原理解析三:OutputFormat
大数据·hadoop
WhoAmI2 天前
MapReduce框架原理解析二:Shuffle
大数据·hadoop
大大大大晴天3 天前
Hudi技术内幕:Key Generation原理与实践
大数据
得物技术7 天前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子7 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
大树887 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai