Flink命令行提交时参数的传递

对于Flink应用的参数传递问题,官方提供了一个简单的工具ParameterTool。当然也可以不使用该工具,而去使用Common CLI(https://commons.apache.org/proper/commons-cli/)或Argparse4j(https://argparse4j.github.io/)都是可以的。详见官网:https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/dev/datastream/application_parameters/

ParameterTool看其实现源码,还是很简单的,要注意读取配置文件时,出现无法读取到文件的情况,比如运行在yarn-application模式下的配置文件的读取问题。

1. ParameterTool的读取方式有3种:

1)从 .properties 配置文件读取 

String propertiesFilePath = "/home/sam/flink/myjob.properties";
ParameterTool parameter = ParameterTool.fromPropertiesFile(propertiesFilePath);

File propertiesFile = new File(propertiesFilePath);
ParameterTool parameter = ParameterTool.fromPropertiesFile(propertiesFile);

InputStream propertiesFileInputStream = new FileInputStream(file);
ParameterTool parameter = ParameterTool.fromPropertiesFile(propertiesFileInputStream);

2)从命令行参数读取

比如:--input hdfs:///mydata --elements 42

ParameterTool parameter = ParameterTool.fromArgs(args);

3)从系统属性读取

比如:-Dinput=hdfs:///mydata

ParameterTool parameter = ParameterTool.fromSystemProperties();

2. ParameterTool在程序中的使用

ParameterTool parameters = // ...
parameter.getRequired("input");
parameter.get("output", "myDefaultValue");
parameter.getLong("expectedCount", -1L);
parameter.getNumberOfParameters();
// .. there are more methods available.

也可以将其注册为全局参数

ParameterTool parameters = ParameterTool.fromArgs(args);

// set up the execution environment
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
env.getConfig().setGlobalJobParameters(parameters);

3. 运行在yarn-application模式下,外部配置文件的读取

运行在 yarn-application模式时,因为外部配置文件在本地,会出现读取不到的情况,所以需要设置-Dyarn.ship-files=xxx.properties,xxx2.properties,来将配置文件上传到集群节点,代码里就可以直接通过ParameterTool.fromPropertiesFile(xxx.properties)来读取了。对于 yarn.ship-files的使用可以参见 YarnClusterDescriptor调用decodeFilesToShipToCluster再在startAppMaster中上传等操作。

相关推荐

  1. Flink命令提交参数传递

    2024-03-10 20:20:04       42 阅读
  2. Flink 命令提交、展示和取消作业

    2024-03-10 20:20:04       24 阅读
  3. Flink 命令提交、展示和取消作业

    2024-03-10 20:20:04       31 阅读
  4. flink源码分析 - 简单解析命令参数

    2024-03-10 20:20:04       45 阅读
  5. PHP命令脚本接收传入参数三种方式

    2024-03-10 20:20:04       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 20:20:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 20:20:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 20:20:04       82 阅读
  4. Python语言-面向对象

    2024-03-10 20:20:04       91 阅读

热门阅读

  1. Redis的HyperLogLog原理介绍

    2024-03-10 20:20:04       41 阅读
  2. 使用Rust开发小型搜索引擎

    2024-03-10 20:20:04       46 阅读
  3. 【深度学习】COCO API源码解读

    2024-03-10 20:20:04       39 阅读
  4. SpringSecurity与Shiro的区别

    2024-03-10 20:20:04       40 阅读
  5. 决策树基本原理&sklearn实现

    2024-03-10 20:20:04       48 阅读
  6. 什么是脏读、幻读、不可重复读?

    2024-03-10 20:20:04       38 阅读
  7. python读写excel时遇到的问题合集

    2024-03-10 20:20:04       39 阅读
  8. P8651 [蓝桥杯 2017 省 B] 日期问题---洛谷(题解)

    2024-03-10 20:20:04       43 阅读
  9. 蓝桥杯---列名

    2024-03-10 20:20:04       44 阅读
  10. 【数据结构】栈和队列

    2024-03-10 20:20:04       49 阅读
  11. Ubuntu 20.04 ROS1 与 ROS2 通讯

    2024-03-10 20:20:04       40 阅读
  12. 理工笔记本配置之ubuntu 锐捷认证

    2024-03-10 20:20:04       36 阅读
  13. redis20240306

    2024-03-10 20:20:04       38 阅读
  14. Vue.js 绑定容器

    2024-03-10 20:20:04       37 阅读
  15. 7、Copmose自定义颜色和主题切换

    2024-03-10 20:20:04       44 阅读