无法将单引号内的值的参数提交给flink作业

时间:2019-03-19 04:14:27

标签: java apache-flink flink-streaming flink-sql

我正在尝试将我的jar提交给args。 我正在使用flink Rest Api以json格式发送我的args。 我在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运行,但是当我通过rest api发送它时,我的查询arg就没有单引号了。因此,我得到了Calcite sql解析异常。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您需要将参数作为参数列表而不是字符串发送。您可以通过设置String字段而不是array类型的字段来完成此操作:

programArgsList

这样,Flink将不会在输入解析过程中删除单引号。有关更多信息,请参见FLINK-10295