Paimon Function

本文介绍 Paimon 函数(Function)的基本操作,以及在 Flink 和 Spark 引擎中通过 SQL 管理函数生命周期的方法。

概述

Paimon 采用函数抽象(Function Abstraction)机制,标准化跨计算引擎的函数支持。函数元数据持久化存储,并可在不同引擎间复用。

该机制解决以下核心需求:

  • 统一数据处理:定义列级数据转换逻辑(如加解密、复杂类型解析)。确保数据读写逻辑一致。

  • 参数化视图:在视图定义中引用函数。实现动态参数化查询,提升检索灵活性。

支持的函数类型

File Function:基于实现类(Class)的函数。指定包含函数逻辑的 JAR 路径,Paimon 加载并执行资源。此方式支持模块化开发。

操作指南

Flink

在 Flink SQL 中,将函数注册到 Paimon Catalog。支持临时函数和持久化函数。

  1. 创建函数

    使用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地址,可以避免网络与文件读写权限问题。

  2. 查看函数

    DLF控制台,可以对函数进行可视化统一管理。

    1. 在左侧菜单栏,选择数据目录,单击Catalog名称,进入Catalog详情页。

    2. 单击对应的数据库名称,进入数据详情页。

    3. 单击函数页签,可以查看已创建的函数。

  3. 修改函数

    使用ALTER FUNCTION更新函数定义。通常用于指向新的业务逻辑实现类。

    -- 修改 parse_str 函数的实现类
    ALTER FUNCTION `paimon_catalog`.`default`.parse_str 
    AS 'com.streaming.flink.udf.StrUdf2' 
    LANGUAGE JAVA;
    说明

    将 parse_str 实现类更新为 StrUdf2。此操作无需删除重建函数。

  4. 删除函数

    使用DROP FUNCTION卸载函数。

    -- 删除 mydb 数据库中的 parse_str 函数
    DROP FUNCTION `paimon_catalog`.`default`.parse_str;
    说明

    此操作从 Catalog 移除函数元数据,不会删除引用的 JAR 文件。

Spark

在 Spark SQL 中通过 Catalog 管理 UDF。支持创建临时函数和持久化函数。

  1. 创建或替换函数

    使用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 正确加载外部自定义逻辑。

  2. 查看函数

    DLF控制台,可以对函数进行可视化统一管理。

    1. 在左侧菜单栏,选择数据目录,单击Catalog名称,进入Catalog详情页。

    2. 单击对应的数据库名称,进入数据详情页。

    3. 单击函数页签,可以查看已创建的函数。

  3. 删除函数

    使用DROP FUNCTION移除函数。删除临时函数需添加TEMPORARY关键字。

    -- 删除持久化函数
    DROP FUNCTION `paimon_catalog`.`default`.simple_udf;