Невозможно отправить аргументы со значениями в одинарных кавычках для выполнения задания мигания

Я пытаюсь отправить свою банку с аргументами. Я использую 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, мой аргумент запроса приходит без одинарных кавычек. И, следовательно, я получаю исключение синтаксического анализа Calcite sql.

Как мне решить эту проблему?


person sky    schedule 19.03.2019    source источник
comment
Вы пробовали заменить 'на юникод для символа: \ u0027?   -  person Runningriot    schedule 19.03.2019
comment
Да, я пробовал ... не работает.   -  person sky    schedule 19.03.2019


Ответы (1)


Вам необходимо отправить параметры в виде списка параметров, а не в виде строки. Вы можете сделать это, установив вместо поля programArgsList, которое имеет тип array:

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 для получения дополнительной информации.

person Till Rohrmann    schedule 20.03.2019
comment
Как правильно добавлять аргументы программы с помощью пользовательского интерфейса? Я пробовал альтернативы, но ни одна из них не сработала. - person misterbaykal; 18.05.2020