You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Flink SQL客户端时,如何正确设置作业参数?

解决Flink自定义函数通过FunctionContext获取作业参数的问题

首先明确:SET语句仅适用于Flink SQL客户端的会话级配置,无法作为作业参数被FunctionContext.getJobParameter获取,这就是你用SET设置后不生效的原因。以下是两种可行的参数传递方式:

方式一:提交作业时通过--conf传递配置参数

在提交作业的命令中,用--conf指定作业级别的参数,格式为--conf "参数键=参数值":

flink run -c com.your.package.YourMainJob your-job.jar --conf "custom.param=hello-world"

在自定义函数中,直接通过FunctionContext获取:

@Override
public void open(FunctionContext context) throws Exception {
    String paramValue = context.getJobParameter("custom.param", "default-value");
    // 使用参数
}

方式二:通过ParameterTool配置全局作业参数

在作业主代码中,将命令行参数转换为ParameterTool并设置为全局作业参数:

import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;

public class YourMainJob {
    public static void main(String[] args) throws Exception {
        ParameterTool params = ParameterTool.fromArgs(args);
        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        env.getConfig().setGlobalJobParameters(params);
        
        // 构建作业逻辑...
        env.execute("Your Job Name");
    }
}

提交作业时直接传入键值对参数:

flink run -c com.your.package.YourMainJob your-job.jar --custom.param hello-world

自定义函数中获取参数的代码和方式一完全一致。

内容的提问来源于stack exchange,提问作者Khoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:58:13