数据湖探索 DLI-自定义函数参数传递:操作步骤

时间:2024-11-16 13:21:43

操作步骤

自定义函数中提供了可选的open(FunctionContext context)方法,FunctionContext具备参数传递功能,自定义配置项通过此对象来传递。自定义函数的参数传递操作步骤如下:

  1. 在Flink OpenSource SQL编辑页面右侧自定义配置中添加参数pipeline.global-job-parameters,格式如下:
    pipeline.global-job-parameters=k1:v1,"k2:v1,v2",k3:"str:ing","k4:str""ing"

    该配置定义了如表1的map。

    表1 pipeline.global-job-parameters示例

    key

    value

    k1

    v1

    k2

    v1,v2

    k3

    str:ing

    k4

    str""ing

    • FunctionContext#getJobParameter只能获取pipeline.global-job-parameters这一配置项的值。因此需要将UDF用到的所有配置项全部写入到pipeline.global-job-parameters中。
    • key和value之间通过冒号(:)分隔,所有key-value用逗号(,)连接。
    • 如果key或value中含有逗号(,),则需要用双引号(")将key:value整个包围起来。参考k2。
    • 如果key或value中含有半角冒号(:),则需要用双引号(")将key或value包围起来。参考k3。
    • 如果key或value中含有双引号("),则需要通过连写两个双引号("")进行转义,也需要用双引号(")将key:value整个包围起来。参考k4。
  2. 在自定义函数代码中,通过FunctionContext#getJobParameter获取map的各项内容,代码示例如下:
    context.getJobParameter("url","jdbc:mysql://xx.xx.xx.xx:3306/table");
    context.getJobParameter("driver","com.mysql.jdbc.Driver");
    context.getJobParameter("user","user");
    context.getJobParameter("password","password");
support.huaweicloud.com/sqlref-flink-dli/dli_08_0452.html