Python多模态函数库

更新时间:
复制 MD 格式

Python Module 提供一组内置多模态处理函数,加载后可在 Flink SQL 中直接调用,无需编写 Python 代码。

使用限制

仅实时计算引擎VVR 11.8及以上版本支持。

功能说明

Python Module 将图像和视频处理函数以内置标量函数的形式开放给 SQL 用户。加载模块后,这些函数可像 UPPERSUBSTRING 等系统函数一样在 SQL 中使用。

CREATE FUNCTION ... LANGUAGE PYTHON 方式相比,Python Module 具备以下优势:

  • 开箱即用:执行 LOAD MODULE python 后即可调用,无需逐个注册 UDF。

  • 无需分发依赖:内置函数随 Flink Python 能力一同提供,无需手动管理 Python 文件。

  • 适合多模态链路:可在 SQL 中直接完成图像、视频与音频的预处理与分析。

对比项

Python Module

CREATE FUNCTION ... LANGUAGE PYTHON

注册方式

LOAD MODULE python 一次加载

逐个注册函数

使用门槛

低,开箱即用

需要准备 Python UDF 文件

依赖分发

自动,无需手动处理

需要显式管理 Python 文件

能力定位

内置多模态处理函数

用户自定义 Python 逻辑

如需使用平台提供的多模态处理能力,推荐优先使用 Python Module;如需编写完全自定义的逻辑,使用 Python UDF。

使用方式

加载模块

LOAD MODULE python;
USE MODULES python, core;

执行后,Python Module 中的函数参与当前会话的函数解析。

调用函数

加载模块后,可直接在 SQL 中调用图像与视频函数,无需执行 CREATE FUNCTION

以下示例将图片字节解码为图像结构,再缩放到 224×224:

LOAD MODULE python;
USE MODULES python, core;

SELECT
    id,
    IMAGE_RESIZE(IMAGE_DECODE(image_bytes, 'raise', 'RGB'), 224, 224) AS image_224
FROM raw_images;

参数约定

SQL 函数按签名中的顺序传参,只支持位置参数。函数签名中的 [ ] 表示可选参数。例如 IMAGE_DECODE 的签名如下:

IMAGE_DECODE(image_bytes [, on_error [, mode [, pixel_limit]]])

调用时遵循以下规则:

  • 只使用默认值时,直接省略后面的可选参数。

  • 如果要设置靠后的可选参数,前面的可选参数也需要写出。

  • 如果前面的可选参数需要留空,请使用 NULL 或默认值占位。NULL 会作为参数值传入,具体含义以该参数说明为准,不等同于默认值。

  • 除数据输入列外,格式、尺寸、阈值、模型名、语言列表等配置参数必须使用常量,不能使用表字段。

-- 使用默认 on_error,mode,pixel_limit
SELECT IMAGE_DECODE(img_bytes) FROM raw_images;

-- 设置 on_error 和 mode,使用默认 pixel_limit
SELECT IMAGE_DECODE(img_bytes, 'null', 'RGB') FROM raw_images;

-- 只设置 on_error 和 pixel_limit,mode 使用 NULL 占位
SELECT IMAGE_DECODE(img_bytes, 'null', null, 67108864)
FROM raw_images;

-- 配置参数需要是常量
SELECT IMAGE_RESIZE(img, 512, 512, 'lanczos') FROM images;

示例

提取图片元信息

LOAD MODULE python;
USE MODULES python, core;

SELECT
    id,
    IMAGE_METADATA(image_bytes) AS meta
FROM raw_images;       

将原始图片字节解码后,提取宽度、高度、通道数、格式等元信息,适用于数据清洗与质量分析。

图像目标检测

LOAD MODULE python;
USE MODULES python, core;

SELECT
    id,
    IMAGE_DETECT_OBJECTS(IMAGE_DECODE(image_bytes, 'raise', 'RGB'), 'yolov8n', 0.1) AS objects
FROM raw_images;       

对解码后的图像使用yolov8n模型进行目标检测,置信度阈值设为 0.1,仅返回高于该阈值的检测结果。适用于商品识别和内容审核。

视频元信息提取

LOAD MODULE python;
USE MODULES python, core;

SELECT
    id,
    VIDEO_METADATA(video_uri) AS meta
FROM source_video;       

根据视频文件 URI 提取时长、分辨率、帧率、编解码器等元信息。

视频抽帧

LOAD MODULE python;
USE MODULES python, core;

SELECT
    id,
    VIDEO_EXTRACT_FRAMES(video_uri, 'sample', 1000, 8) AS sampled_frames
FROM source_video;

以 1000 毫秒为采样间隔从视频中抽帧,最多返回 8 帧图像,用于后续图像分析或特征提取。

内置函数列表

Python Module 已内置丰富的函数实现,覆盖图像、视频和音频处理场景。更多函数说明请参见图像函数视频函数音频函数