无法将单引号内带有值的参数提交给 flink 作业
Not able to submit arguments with values within single quote to flink job
我正在尝试提交带有 args 的 jar。
我正在使用 flink Rest Api 以 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 运行,但是当我通过 rest api 发送它时,我的查询参数没有单引号。因此我得到方解石 sql 解析异常。
我该如何解决这个问题?
您需要将参数作为参数列表而不是字符串发送。您可以通过设置 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。
我正在尝试提交带有 args 的 jar。 我正在使用 flink Rest Api 以 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 运行,但是当我通过 rest api 发送它时,我的查询参数没有单引号。因此我得到方解石 sql 解析异常。
我该如何解决这个问题?
您需要将参数作为参数列表而不是字符串发送。您可以通过设置 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。