External Function 概览
云器 Lakehouse 通过 External Function 机制支持自定义函数(UDF/UDAF/UDTF)。与内置 SQL 函数不同,External Function 的执行逻辑运行在云上的函数计算服务中(阿里云 FC、腾讯云 SCF、AWS Lambda),Lakehouse 通过 HTTP 协议调用并获取结果——你在 SQL 里写的是函数调用,函数体跑在云上的 Python 或 Java 代码里。
这种机制的好处是:可以引入任意第三方库(scikit-learn、jieba、PyTorch 等),实现 SQL 原生函数无法完成的逻辑,同时保持在 SQL 中调用的体验。
工作原理
用户在 SQL 中调用 External Function → Lakehouse 向外部函数计算服务发送 HTTP 请求 → 获取处理结果并返回。
创建流程分四步:
- 开通云上函数计算服务(阿里云 FC / 腾讯云 SCF / AWS Lambda)和对象存储(OSS / COS / S3)
- 创建 Storage Connection 和 External Volume,将函数代码及依赖打包上传
- 创建 API Connection,授予 Lakehouse 调用函数计算服务的权限
- 执行
注册函数,在 SQL 中调用CREATE EXTERNAL FUNCTION
支持的函数类型与运行环境
| 函数类型 | Python | Java |
|---|---|---|
| UDF(单行输入单行输出) | ✅ | ✅ |
| UDAF(多行输入单行输出) | ❌ | ✅ |
| UDTF(单行输入多行输出) | ❌ | ✅ |
运行环境:Java 8 / Python 3.10。依赖包压缩后超过 500 MB 时,需改用容器镜像方式部署,参考 利用 Hugging Face 图片识别模型处理图片数据。
本章内容
| 页面 | 说明 |
|---|---|
| 介绍:External Function | 概念、架构原理、优势、使用限制与计费说明 |
| 开发指南:Python3 | 环境准备、代码结构、依赖打包、部署到阿里云 FC |
| 开发指南:Java | Java 8 函数开发、打包、UDF/UDAF/UDTF 实现 |
| 使用指南:External Function | 授权配置、创建连接、注册函数、在 SQL 中调用的完整操作流程 |
| CREATE EXTERNAL FUNCTION | DDL 完整语法和参数说明 |
| Storage Connection + API Connection + External Function 组合实战 | 三云环境(阿里云/腾讯云/AWS)从零跑通的完整示例,含 Python ML 函数、30 个 AI 函数、Java UDF/UDAF/UDTF |
联系我们
