聊聊flink的ParameterTool

本文深入探讨了Apache Flink的ParameterTool,介绍了如何通过fromPropertiesFile、fromArgs和fromSystemProperties方法创建ParameterTool,以及如何获取参数值、设置全局访问,并简要总结了其在Flink应用中的作用。
摘要由CSDN通过智能技术生成

本文主要研究一下flink的ParameterTool

实例

fromPropertiesFile

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);
  • 使用ParameterTool.fromPropertiesFile从.properties文件创建ParameterTool

fromArgs

public static void main(String[] args) {
    ParameterTool parameter = ParameterTool.fromArgs(args);
    // .. regular code ..
}
  • 使用ParameterTool.fromArgs从命令行创建ParameterTool(比如--input hdfs:///mydata --elements 42)

fromSystemProperties

ParameterTool parameter = ParameterTool.fromSystemProperties();
  • 使用ParameterTool.fromSystemProperties从system properties创建ParameterTool(比如-Dinput=hdfs:///mydata)

获取参数值

ParameterTool parameters = // ...
parameter.getRequired("input");
parameter.get("output", "myDefaultValue");
parameter.getLong("expectedCount", -1L);
parameter.getNumberOfParameters()
// .. there are more methods available.
  • 可以使用ParameterTool的get、getRequired、getLong等方法获取参数值

设置为global

env.getConfig().setGlobalJobParameters(parameters);

public static final class Tokenizer extends RichFlatMapFunction<String, Tuple2<String, Integer>> {

    @Override
    public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
    ParameterTool parameters = (ParameterTool)
        getRuntimeContext().getExecutionConfig().getGlobalJobParameters();
    parameters.getRequired("input");
    // ... do more ...
}
  • 使用env.getConfig().setGlobalJobParameters将ParameterTool的访问范围设置为global

GlobalJobParameters

flink-core-1.7.1-sources.jar!/org/apache/flink/api/common/ExecutionConfig.java

    public static class GlobalJobParameters implements Serializable {
        private static final long serialVersionUID = 1L;

        /**
         * Convert UserConfig into a {@code Map<String, String>} representation.
         * This can be used by the runtime, for example for presenting the user config in the web frontend.
         *
         * @return Key/Value representation of the UserConfig
         */
        public Map<String, String> toMap() {
            return Collections.emptyMap();
        }
    }
  • GlobalJobParameters里头有一个toMap方法,返回Collections.emptyMap()

ParameterTool

flink-java-1.7.1-sources.jar!/org/apache/flink/api/java/utils/ParameterTool.java

@Public
public class ParameterTool extends ExecutionConfig.GlobalJobParameters implements Serializable, Cloneable {
    private static final long serialVersionUID = 1L;

    protected static final String NO_VALUE_KEY = "__NO_VALUE_KEY";
    protected static final String DEFAULT_UNDEFINED = "<undefined>";

    //......

    // -------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值