上传 UDF jar 包

请求语法

  1. POST /v2/udf/jars/<JarName>
  2. Content-Type: application/java-archive
  3. Content-MD5: <ContentMD5>
  4. Authorization: Pandora <auth>

请求内容

参数 类型 必填 说明
JarName string jar包名称唯一标识一个jar文件,命名规则: ^[a-zA-Z][a-zA-Z0-9_\\.]{0,127}[a-zA-Z0-9_]$,1-128个字符,支持小写字母、数字、下划线;必须以大小写字母开头
Content-MD5 string jar包的MD5码

UDF Jar包说明:

  • 上传的UDF Jar包最大为100MB。

  • Content-MD5头部是可选的。如果上传UDF Jar包的时候带上该头部服务器会校验上传数据的校验和,如果两者不一致服务器将拒绝上传。如果不带该头部,服务器不做任何校验和的检查。

  • 先计算UDF Jar内容的MD5,再对MD5做一次base64编码转化为字符串。例如qiniu这个字符串的Content-MD5是gLL29S04bTCxYd2kCqsEIQ==而不是7b9d6b4d89f6825a196d4cc50fdbedc5

响应报文

  1. 200 OK

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/udf/jars/UdfAggCollection \
  2. -H 'Content-Type: application/java-archive' \
  3. -H 'Authorization: Pandora 111e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -T /path/to/udf-agg-1.0-SNAPSHOT.jar

修改 UDF jar 包信息

请求语法

  1. PUT /v2/udf/jars/<JarName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "description": "<UDF 描述信息>"
  6. }

请求内容

参数 类型 必填 说明
JarName string jar包名称唯一标识一个jar文件,命名规则: ^[a-zA-Z][a-zA-Z0-9_\\.]{0,127}[a-zA-Z0-9_]$,1-128个字符,支持小写字母、数字、下划线;必须以大小写字母开头
description string 对于jar包的一些描述信息

响应报文

  1. 200 OK

删除 UDF jar 包

请求语法

  1. DELETE /v2/udf/jars/<JarName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>

请求内容

参数 类型 必填 说明
jarName string jar包名称, 如UdfAggCollection

示例

  1. curl -X DELETE https://pipeline.qiniu.com/v2/jars/UdfAggCollection \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 111e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y='

响应报文

  1. 200 OK
  2. Content-Type: application/json

or

  1. 404 NotFound
  2. Content-Type: application/json
  3. {
  4. "error":"jar file does not exist"
  5. }

获取 UDF jar 包列表

请求语法

  1. GET /v2/udf/jars?from=1&size=2&sort=uploadTime
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>

请求内容

参数 类型 必填 说明
from int 分页条件,从第几条开始展示,不填则返回全部
size int 分页条件,返回多少条展示,不填则返回全部
sort string 排序字段,格式如列名:排序顺序,如sort=uploadTime:desc, sort=uploadTime:asc,如果不填排序顺序,如sort=uploadTime,则默认顺序排列

响应内容

参数 类型 必填 说明
jarName string jar包名称
description string jar包描述
uploadTime string jar包上传时间

示例

  1. curl -X GET https://pipeline.qiniu.com/v2/udf/jars?from=1&size=2&sort=uploadTime \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 111e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y='

响应报文

  1. 200 OK
  2. Content-Type: application/json
  3. {
  4. "result": [
  5. {
  6. "jarName": "UdfAggCollection",
  7. "description":"聚合类UDF集合",
  8. "uploadTime": "2017-06-01 15:00:00"
  9. },
  10. {
  11. "jarName": "UdfSortCollection",
  12. "description":"排序类UDF集合",
  13. "uploadTime": "2017-06-01 14:00:00"
  14. }
  15. ]
  16. }

UDF 函数注册

请求语法

  1. POST /v2/udf/funcs/<FuncName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "jarName": "<Jar Name>",
  6. "className": "<Full path class name>",
  7. "funcDeclaration" : "<Function Definition>",
  8. "description": "<UDF description>"
  9. }

请求内容

参数 类型 必填 说明
funcName string udf的自定义函数名称(主键),如sum,avg。【注意】函数名大小写不敏感,将统一转成小写注册
className string 自定义udf的全路径名称com.company.biz.udf.SUM
jarName string udf包名称,从中解析出UDF类
funcDeclaration string 函数定义式,用来简要表达函数的输入输出,double add(double m, double n)
description string 自定义的函数描述

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/udf/funcs/str_len \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 111e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "jarName":"UdfCollection",
  6. "className": "com.qiniu.udf.StrLength",
  7. "funcDeclaration" : "int str_len(string s)",
  8. "description": "计算字符串长度,参数s代表输入字符串,返回值为字符串长度。\n 比如 str_len("abc") 返回值为 3 "
  9. }'

响应报文

  1. 200 OK
  2. Content-Type: application/json

or

  1. 409 Conflict
  2. Content-Type: application/json
  3. {
  4. "error":"funcName already exists"
  5. }

UDF 函数注册删除

请求语法

  1. DELETE /v2/udf/funcs/<FuncName>
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>

请求内容

参数 类型 必填 说明
funcNames array udf的自定义函数名称(主键)数组,如sum,avg,批量删除

示例

  1. curl -X DELETE https://pipeline.qiniu.com/v2/udf/funcs/str_len \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 111e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \

响应报文

  1. 200 OK
  2. Content-Type: application/json

UDF 函数查询

请求语法

  1. GET /v2/udf/funcs?from=1&size=2&sort=uploadTime:desc&jarName=a,b,c&funcName=a,b,c
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>

请求内容

参数 类型 必填 说明
from int 分页条件,从第几条开始展示,不填则返回全部
size int 分页条件,返回多少条展示,不填则返回全部
sort string 排序字段,格式如列名:排序顺序,如sort=jarName:desc, sort=jarName:asc,如果不填排序顺序,如sort=jarName,则默认顺序排列
jarName string 选择指定jar包对应的注册函数,jarName=a,b,c,逗号分隔字符串,代表查询a,b,c三个jar包的所有注册函数
funcName string 选择指定函数名的注册函数,funcName=a,b,c,逗号分隔字符串,代表查询a,b,c三个函数名对应的注册函数信息

响应报文

  1. 200 OK
  2. Content-Type: application/json
  3. {
  4. result:[
  5. {
  6. "jarName": "UdfCollection",
  7. "funcName": "str_len",
  8. "className": "com.qiniu.udf.StrLength",
  9. "funcDeclaration" : "int str_len(string s)",
  10. "description": "计算字符串长度,参数s代表输入字符串,返回值为字符串长度。\n 比如 str_len("abc") 返回值为 3 "
  11. }
  12. ]
  13. }

响应内容

参数 类型 必填 说明
funcName string udf的自定义函数名称(主键),如sum,avg
jarName string udf包名称
className string 自定义udf的全路径名称,com.company.biz.udf.SUM
funcDeclaration string 函数定义式,用来简要表达函数的输入输出,如 double add(double m, double n)
description string 自定义的函数描述

UDF调试

请求语法

  1. POST /v2/udf/debug
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>
  4. {
  5. "udfExpression": "<UDF debug expression>"
  6. }

请求内容

参数 类型 必填 说明
udfExpression string 要调试的UDF的表达式,来验证udf的输出是否符合预期,如str_lenth(“debug_udf”)

说明
目前仅支持UDF调试,暂不支持UDAF,UDTF调试

示例

  1. curl -X POST https://pipeline.qiniu.com/v2/udf/debug \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 111e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \
  4. -d '{
  5. "udfExpression": "select str_len("abcd") as a1, ucase("ab") as a2"
  6. }'

响应报文

  1. 200 OK
  2. Content-Type: application/json
  3. {
  4. result:[
  5. {"a1":"4", "a2": "AB"}
  6. ]
  7. }

or

  1. 400 BadRequest
  2. Content-Type: application/json
  3. {
  4. "error":"invalid udf debug expression"
  5. }

说明

UDF调试调试表达式必须符合 select udf1(param...) as column2, udf2(param...) as column2 格式

UDF 内置函数展示

请求语法

  1. GET /v2/udf/builtins?from=1&size=2&sort=funcName:desc
  2. Content-Type: application/json
  3. Authorization: Pandora <auth>

请求内容

参数 类型 必填 说明
from int 分页条件,从第几条开始展示,不填则返回全部
size int 分页条件,返回多少条展示,不填则返回全部
sort string 排序字段,格式如列名:排序顺序,如sort=funcName:desc, sort=funcName:asc,如果不填排序顺序,如sort=funcName,则默认顺序排列
category string 选择指定类别对应的内置函数,category=窗口函数,代表查询所有窗口函数

响应内容

参数 类型 必填 说明
funcName string udf的内置函数名称(主键),如sum, avg
description string 内置的函数描述
category string 函数分类,如日期函数,数学函数等。默认支持:match(数学函数),collection(集合函数),type_conversion(类型转换函数),date(日期函数),condition(条件函数), string(字符串函数),udaf(聚合函数),udtf(表格函数)

示例

  1. curl -X GET https://pipeline.qiniu.com/v2/udf/builtins?from=1&size=2&sort=funcName:desc \
  2. -H 'Content-Type: application/json' \
  3. -H 'Authorization: Pandora 111e7iG13J66GA8vWBzZdF-UR_d1MF-kacOdUUS4:NTi3wH_WlGxYOnXsvgUrO4XMD6Y=' \

响应报文

  1. 200 OK
  2. Content-Type: application/json
  3. [
  4. {
  5. "funcName": "abs",
  6. "funcDeclaration" : "double cos(double a) \n bigint cos(bigint a)",
  7. "description": "绝对值计算",
  8. "category": "math"
  9. },
  10. {
  11. "funcName":"cos",
  12. "funcDeclaration" : "double cos(double a)",
  13. "description": "余弦值计算",
  14. "category": "math"
  15. }
  16. ...
  17. ]