本文介绍 Paimon 函数(Function)的基本操作,以及在 Flink 和 Spark 引擎中通过 SQL 管理函数生命周期的方法。
概述
Paimon 采用函数抽象(Function Abstraction)机制,标准化跨计算引擎的函数支持。函数元数据持久化存储,并可在不同引擎间复用。
该机制解决以下核心需求:
统一数据处理:定义列级数据转换逻辑(如加解密、复杂类型解析)。确保数据读写逻辑一致。
参数化视图:在视图定义中引用函数。实现动态参数化查询,提升检索灵活性。
支持的函数类型
File Function:基于实现类(Class)的函数。指定包含函数逻辑的 JAR 路径,Paimon 加载并执行资源。此方式支持模块化开发。
操作指南
Flink
在 Flink SQL 中,将函数注册到 Paimon Catalog。支持临时函数和持久化函数。
创建函数
使用
CREATE FUNCTION注册用户自定义函数(UDF)。指定函数标识符、Java 类名及依赖路径。-- 在 Paimon Catalog 的 default 数据库中创建持久化函数 parse_str -- 函数基于 Java 实现,并从对象存储加载依赖 JAR 包。 CREATE FUNCTION `paimon_catalog`.`default`.parse_str AS 'com.streaming.flink.udf.StrUdf' LANGUAGE JAVA USING JAR 'oss://my_bucket/my_location/udf.jar';重要必须使用全限定名称。明确指定 Catalog、数据库和函数名称。
系统不校验 JAR 路径的有效性。请检查网络连接和文件读写权限,确保函数注册成功。
使用实时计算Flink版进行注册时,通过文件管理上传Jar包,填写对应的OSS地址,可以避免网络与文件读写权限问题。
查看函数
在DLF控制台,可以对函数进行可视化统一管理。
在左侧菜单栏,选择数据目录,单击Catalog名称,进入Catalog详情页。
单击对应的数据库名称,进入数据详情页。
单击函数页签,可以查看已创建的函数。
修改函数
使用
ALTER FUNCTION更新函数定义。通常用于指向新的业务逻辑实现类。-- 修改 parse_str 函数的实现类 ALTER FUNCTION `paimon_catalog`.`default`.parse_str AS 'com.streaming.flink.udf.StrUdf2' LANGUAGE JAVA;说明将 parse_str 实现类更新为 StrUdf2。此操作无需删除重建函数。
删除函数
使用
DROP FUNCTION卸载函数。-- 删除 mydb 数据库中的 parse_str 函数 DROP FUNCTION `paimon_catalog`.`default`.parse_str;说明此操作从 Catalog 移除函数元数据,不会删除引用的 JAR 文件。
Spark
在 Spark SQL 中通过 Catalog 管理 UDF。支持创建临时函数和持久化函数。
创建或替换函数
使用
CREATE FUNCTION注册函数。使用OR REPLACE覆盖同名函数,使用 TEMPORARY 创建会话级函数。-- 1. 创建持久化函数 (需指定 Database) CREATE FUNCTION `paimon_catalog`.`default`.simple_udf AS 'com.example.SimpleUdf' USING JAR '/tmp/SimpleUdf.jar'; -- 2. 创建或替换临时函数 (不指定 Database) -- 临时函数仅在当前 Spark Session 有效 CREATE OR REPLACE TEMPORARY FUNCTION simple_temp_udf AS 'com.example.SimpleUdf' USING JAR '/tmp/SimpleUdf.jar';说明Spark 环境必须配置
USING JAR。这确保 Driver 和 Executor 正确加载外部自定义逻辑。查看函数
在DLF控制台,可以对函数进行可视化统一管理。
在左侧菜单栏,选择数据目录,单击Catalog名称,进入Catalog详情页。
单击对应的数据库名称,进入数据详情页。
单击函数页签,可以查看已创建的函数。
删除函数
使用
DROP FUNCTION移除函数。删除临时函数需添加TEMPORARY关键字。-- 删除持久化函数 DROP FUNCTION `paimon_catalog`.`default`.simple_udf;