Python Module 提供一组内置多模态处理函数,加载后可在 Flink SQL 中直接调用,无需编写 Python 代码。
使用限制
仅实时计算引擎VVR 11.8及以上版本支持。
功能说明
Python Module 将图像和视频处理函数以内置标量函数的形式开放给 SQL 用户。加载模块后,这些函数可像 UPPER、SUBSTRING 等系统函数一样在 SQL 中使用。
与 CREATE FUNCTION ... LANGUAGE PYTHON 方式相比,Python Module 具备以下优势:
开箱即用:执行
LOAD MODULE python后即可调用,无需逐个注册 UDF。无需分发依赖:内置函数随 Flink Python 能力一同提供,无需手动管理 Python 文件。
适合多模态链路:可在 SQL 中直接完成图像、视频与音频的预处理与分析。
对比项 | Python Module | CREATE FUNCTION ... LANGUAGE 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 已内置丰富的函数实现,覆盖图像、视频和音频处理场景。更多函数说明请参见图像函数、视频函数、音频函数。