Flink传入自定义的参数或配置文件

本文介绍了Apache Flink中动态参数的两种传入方式:fromArgs方法和fromPropertiesFile方法。fromArgs通过命令行参数读取,fromPropertiesFile则从配置文件中获取参数。在实际操作中,详细展示了如何使用这两个方法来获取和注册参数,并在Flink作业中应用,例如设置任务重启策略。此外,还给出了配置文件的示例格式和动态接收参数的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Flink 动态参数传入方式简介

Flink提供ParameterTool类,从不同的来源读取参数

1.fromArgs方法
2.fromPropertiesFile方法
3.fromSystemProperties方法

二、Flink 动态参数实操

1.fromArgs方法

读取在命令行中传递的参数,注意传参 格式为 key value ,key必须以 - 或者 – 开头,如 --key1 value1 --key2 value2 -key3 value3

eg: 传参格式为 --type:“stock” --markType:“101” 空格间隔

在这里插入图片描述

  • 动态收参代码
		StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        // 获取传入的参数
        ParameterTool parameterTool = ParameterTool.fromArgs(args);
        // 注册给环境变量
        env.getConfig().setGlobalJobParameters(parameterTool);
        // 获取注册的配置
        ExecutionConfig.GlobalJobParameters parameters = env.getConfig().getGlobalJobParameters();
        Map<String, String> map = parameters.toMap();
        String markType = map.get("markType");

        // 设置任务失败重启 允许任务失败最大次数 3次
        env.setRestartStrategy(RestartStrategies.failureRateRestart(3,
                // 任务失败的时间启动的间隔
                Time.of(2, TimeUnit.SECONDS),
                // 允许任务延迟时间 3s
                Time.of(3, TimeUnit.SECONDS))
        );

2.fromPropertiesFile方法

  • 配置文件Flink-conf.yarml编写方式
#hbase连接地址
hbase_zookeeper_quorum: localhost
hbase_zookeeper_client_port: 2181

#kafka连接地址
kafka_source_quorum: 
kafka_source_topic: 
kafka_source_group: 

记得yml文件 冒号":" 和地址 中间加空格哦!

  • 动态收参代码
		StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
		ParameterTool parameterTool = ParameterTool.fromPropertiesFile("配置文件目录");
        // 注册给环境变量
        env.getConfig().setGlobalJobParameters(parameterTool);
        // 获取注册的配置
        ExecutionConfig.GlobalJobParameters parameters = env.getConfig().getGlobalJobParameters();
		//设置静态类调用
        new FlinkConf(parameters);
public class FlinkConf {
	//静态类
	public static String HBASE_SERVER ;
    public static String KAFKA_SERVER ;
	public FlinkConf(ExecutionConfig.GlobalJobParameters parameters){
        Map<String, String> map = parameters.toMap();
        HBASE_SERVER = map.get("hbase_zookeeper_quorum");
        KAFKA_SERVER = map.get("kafka_quorum");
    }
}
### Flink Web Interface 提交任务并设置参数 要在虚拟机上的 Flink 配置文件路径 (`bin` 和 `etc` 目录) 中通过 Web 界面提交带有参数的任务,可以按照以下方法操作: #### 1. 修改配置文件 Flink 的主要配置文件位于 `etc/flink-conf.yaml`。可以通过编辑此文件来定义全局参数[^2]。例如,如果需要指定 Kafka 连接器的镜像拉取命令,则可以在 Docker 容器启动前执行如下命令以确保所需镜像已加载到环境中: ```bash sudo docker pull flinkstreaming/flink-connectors-kafka ``` 对于其他特定于作业的参数,通常不会直接写入 `flink-conf.yaml` 文件中,而是作为程序的一部分者通过 CLI 参数传递。 #### 2. 使用 `-yD` 设置动态参数 当通过 Flink Web UI 提交任务时,支持使用 YAML 者 JSON 格式的参数文件上传至服务器端解析。然而更常见的方式是在页面上手动输入参数键值对,这些参数会映射到运行时环境变量 JobManager/TaskManager 属性表里[^3]。具体来说,在提交任务对话框中有选项允许附加额外属性比如: - 并行度(`parallelism`) - 检查点间隔时间(`state.checkpoints.num-retained`) 假设我们希望调整 checkpoint 存储位置以及启用 exactly-once 语义模式,那么应该这样填写字段名与对应值: | Key | Value | | --- | ----- | | state.backend | filesystem | | state.checkpoint.dir | hdfs:///checkpoints | 上述设定将会覆盖默认行为,并且仅作用于此单独实例而非影响整个集群范围内的所有应用进程。 #### 3. 编辑脚本启动服务 为了简化流程控制逻辑,还可以自定义 shell 脚本来完成一系列初始化准备工作后再调用官方提供的 start-cluster.sh 命令开启服务监听端口等待请求到来。下面给出一个简单的例子展示如何组合多个步骤一起执行: ```bash #!/bin/bash # Step A: Ensure required images are available locally. docker pull flinkstreaming/flink-connectors-kafka # Step B: Start YARN session with custom configurations applied. ./bin/yarn-session.sh -n 4 \ -jm 1024m \ -tm 4096m \ --detached \ --name my-flink-job \ --from-savepoint /path/to/savepoint_location ``` 注意这里只是示范用途的实际生产环境下可能还需要考虑更多因素如安全性验证机制等等[^4]。 最后提醒一下虽然本文档重点讨论了基于web ui方式部署方案但实际上很多时候也会采用rest api接口形式自动化管理调度更加灵活高效值得深入研究学习!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值