CREATE FUNCTION
创建一个通过 Flight 调用远程 handler 的外部函数(通常为 Python 或其他服务)。
支持的语言
- 由远程服务器决定(通常为 Python,但只要实现了 Flight endpoint,也可以使用任何语言)
语法
CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS ] <function_name>
AS ( <input_param_types> ) RETURNS <return_type> LANGUAGE <language_name>
HANDLER = '<handler_name>' ADDRESS = '<udf_server_address>'
[DESC='<description>']
示例
本示例将演示一个完整的端到端配置过程,用于创建一个计算两个整数最大公约数(GCD)的外部函数。
第 1 步:设置 Python UDF 服务器
安装 tidbcloudlake-udf 包:
pip install tidbcloudlake-udf
创建文件 udf_server.py,内容如下:
from tidbcloudlake_udf import udf, UDFServer
@udf(
input_types=["INT", "INT"],
result_type="INT",
skip_null=True,
)
def gcd(x: int, y: int) -> int:
while y != 0:
(x, y) = (y, x % y)
return x
if __name__ == '__main__':
server = UDFServer("0.0.0.0:8815")
server.add_function(gcd)
server.serve()
启动服务器:
python udf_server.py
第 2 步:在 TiDB Cloud Lake 中注册函数
CREATE FUNCTION gcd AS (INT, INT)
RETURNS INT
LANGUAGE python
HANDLER = 'gcd'
ADDRESS = 'https://udf.example.com';
第 3 步:调用函数
SELECT gcd(48, 18);
-- Returns: 6
SELECT gcd(100, 75);
-- Returns: 25