Java Flink从集群GUI向作业提交参数的正确方法是什么?

Java Flink从集群GUI向作业提交参数的正确方法是什么?,java,user-interface,apache-flink,Java,User Interface,Apache Flink,我的目标是通过集群GUI中的“程序参数”字段将参数传递给Flink作业的Main()函数 在Main()函数中以如下方式访问它们(最好是通过键名): public static void main(String[] args) throws Exception { ParameterTool parameter = ParameterTool.fromArgs(args); CustomProps props = new CustomProps (DEFAULT_PROPER

我的目标是通过集群GUI中的“程序参数”字段将参数传递给Flink作业的Main()函数

在Main()函数中以如下方式访问它们(最好是通过键名):

public static void main(String[] args) throws Exception {

    ParameterTool parameter = ParameterTool.fromArgs(args);

    CustomProps props = new CustomProps (DEFAULT_PROPERTIES_FILE);

    String kafkaAutoOffsetReset = props.getKafkaAutoOffsetReset();
    String cassandraClusterUrl = props.getCassandraClusterUrl();

    if (args.length == 1 && args[0] != null) {

        cassandraClusterUrl = parameter.get("cassandraClusterUrl");
        kafkaAutoOffsetReset = parameter.get("kafkaOffset");
    }

    //Other code...

}
我尝试了“ParameterTool”,但没有从中获得任何信息,如果我尝试以下操作:

kafkaAutoOffsetReset = args[0];
只有在“程序参数”字段中输入一个单词时,它才有效。因此,如果我提出:

blah
它说它被设置为“废话”,但如果我尝试以下任何一种:

-kafkaOffset blah
--kafkaOffset blah
-kafkaOffset:blah
-kafkaOffset=blah
我什么也得不到。我知道在CLI中,如何将参数传递给jar的示例是:

--input file:///home/user/hamlet.txt --output file:///home/user/wordcount_out
但似乎我缺少了一种不同的方式来使用GUI,而且我在查找与之相关的文档时失败了

TL;DR

通过Flink Cluster GUI中的“Program Arguments”字段提交多个参数的正确方式是什么?在Main()函数中访问这些参数的正确方式是什么


提前感谢您的帮助

找到了答案。以下是必须如何传递参数:
程序参数应以flink格式给出,如下所示


--custom.key.one custom.value.one--custom.key.two custom.value.two

这是否意味着我们需要像-parameterName=“parameterValue”那样传递它,例如kAKFA_ENDPOINT=“localhost”KAFKA_PORT=“9092”这里提供的解决方案都不适合我。我使用的是flink版本1.10.0,并传递了4个参数。有什么问题吗?以下是异常:org.apache.flink.runtime.rest.handler.RestHandlerException:只需要一个值[kafka.brokers=“192.168.13.178:9092”kafka group=“group-1”kafka topic=“topic-1”kafka start position=“latest”]。在org.apache.flink.runtime.rest.handler.util.HandlerRequestUtils.getQueryParameter(HandlerRequestUtils.java:59)在org.apache.flink.runtime.rest.handler.util.HandlerRequestUtils.getQueryParameter(HandlerRequestUtils.java:47)@misterbal我不确定通过gui读取参数的格式在最近的版本中是否发生了变化,但是从堆栈跟踪的角度来看,我认为您的问题在于在将参数读入程序后,如何处理这些参数。它说“只需要一个值”,所以我猜您的方法需要一个值,而直接使用args并不是该方法想要的。尝试在代码中的对象中手动设置值,看看这是否可以作为参数使用。如果有,则切换到让args填充该对象。@Jicaar感谢您的反馈。我按照你的建议试过了,但没有成功。当我从IDE运行代码时,args设置没有任何问题。但当我将它部署到WebUI时,它会给出相同的错误。不知何故,WebUI需要一种不同的方式。我正在使用“ParameterTool.fromArgs(args)”