EXTERNAL FUNCTION
概述
EXTERNAL FUNCTION(REMOTE FUNCTION) 是在云器Lakehouse 中通过 Python & Java 语言创建的自定义函数(UDF),通过远程服务执行(支持的远程服务包括:阿里云的函数计算FC,腾讯云的云函数服务)。在执行过程中可调用
- 在线服务:以API 形式对外提供的在线服务,如:AI 在线模型服务(如:大语言模型 API,云平台提供的在线 AI 的API 服务)
- 离线功能:将特定功能函数代码、依赖库、模型和数据等文件打包成的离线服务包。如从 Hugging Face 中下载的图片识别模型等
云器Lakehouse通过创建API CONNECTION,在元数据中保存了外部云函数计算服务的连接访问信息,EXTERNAL FUNCTION通过HTTP协议调用外部函数计算服务实现进行数据处理并返回结果。
Lakehouse平台通过用户的预先授权,在创建外部函数时,将自动在客户账号下的云函数服务下创建函数。在用户在SQL查询中使用外部函数时,由外部函数实现与外部计算服务的安全连接、数据处理并返回查询结果。
EXTERNAL FUNCTION 创建主要流程
- 用户开通云上的函数计算服务(如阿里云的函数计算FC)和对象存储服务
- 将函数执行代码&可执行文件、依赖的库、模型和数据文件,打包上传至对象存储
- 并且授予云器Lakehouse 操作上述服务和访问函数文件的权限
- 用户执行连接和外部函数 DDL 生成 UDF,并在查询中使用
EXTERNAL FUNCTION 执行过程
- 用户在云器Lakehouse SQL语句中调用External function
- 云器Lakehouse 根据提供的服务地址和认证信息发送 http 请求调用运行函数
- 云器Lakehouse 获取响应信息返回结果
EXTERNAL FUNCTION 优势
- 可以使用 Remote Function 调用外部丰富的数据处理能力,对传统 SQL 计算模型做补充。如可调用大语言模型(LLM)、图像、音视频等,补充SQL 的非结构化数据处理能力
- 可以直接访问外部网络,不受云器Lakehouse 网络约束
使用限制
- 目前只支持 java 和 pyhton 编程语言,支持的运行环境:Java 8 和 Python 3.10 版本
- 如果依赖原生库 (包含 .so 的库),需要兼容 Python 3.10 ABI
- 当程序以及依赖文件压缩之后大于 500M,需要以容器镜像方式创建函数,请参考实践:利用Hugging Face 图片识别模型处理图片数据
EXTERNAL FUNCTION收费
- 支持自定义函数类型:UDF,UDAF,UDTF
- 远程服务调用的费用:参考云厂商的函数计算服务费用信息(阿里云请参考链接,腾讯云请参考链接)
- 使用云器Lakehouse 的计算资源产生的计算费用
- 数据传输费用:任何涉及公网数据流出的费用。内网不收取计费信息
使用REMOTE FUNCTION开发UDF函数
请参考以下开发指南:
- 开发指南: External Function(Java)
- 开发指南: External Function(Python3)
联系我们