无法向flink作业提交单引号中包含值的参数

dddzy1tm  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(742)

我正试图提交我的带有args的jar。我正在使用flinkrestapi以json格式发送参数。我的java输入示例是

JSONObject json = new JSONObject();
 json.put("programArgs","--bootstrap.server \"localhost:9092\" --zookeeper.server \"localhost:2181\" --query \"where agentHost='192.168.170.111'\" --source.topic \"demo1\" --dest.topic \"rules\" --job.id \"123\" --extra.info \"sdcdscsd\"");
httpPost.setEntity(new StringEntity(json.toJSONString()));

当我给出这些参数时,我的作业是通过ide运行的,但是当我通过restapi发送时,我的查询参数没有单引号。因此,我得到方解石sql解析异常。
如何解决此问题?

nbewdwxp

nbewdwxp1#

您需要将参数作为参数列表而不是字符串发送。可以通过设置 programArgsList 改为数组类型的字段:

json.put("programArgsList", Arrays.asList("--bootstrap.server", "localhost:9092", "--zookeeper.server", "localhost:2181", "--query", "where agentHost='192.168.170.111'", "--source.topic", "demo1", ...));

这样flink就不会在输入解析中删除单引号。详见flink-10295。

相关问题