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 创建主要流程

请参考:使用流程: 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函数

请参考以下开发指南:

联系我们
预约咨询
微信咨询
电话咨询