Я пишу код JAVA для обновления конфигурации в Ambari.
В журнале сервера Ambari я получаю следующее сообщение "Ожидается строка, но в строке 1 столбца 2" BEGIN_OBJECT "
На стороне клиента я получаю следующую ошибку HTTP / 1.1 500 Ошибка сервера
Ниже приводится выдержка из кода JAVA:
properties.put("Config_name","5096");
JSONObject desired_config = new JSONObject();
desired_config.put("type","service-master");
desired_config.put("tag","version15689870358181");
desired_config.put("service_config_version_note","New config version curl 1");
desired_config.put("properties", properties);
JSONObject Clusters = new JSONObject();
Clusters.put("desired_config", desired_config);
JSONObject UClusters = new JSONObject();
UClusters.put("Clusters", Clusters);
String jsonStr = UClusters.toString();
System.out.println("here it goes\n" + jsonStr);
StringEntity params = new StringEntity(jsonStr);
httpPost.setEntity(new StringEntity(jsonStr));
CloseableHttpResponse response = httpclient.execute(httpPost);
JSON на стороне Ambari - это большой файл, однако он стандартный. Дайте мне знать, если это необходимо, чтобы выручить меня.
Ниже команда curl работает нормально, и я пытаюсь использовать тот же формат JSON в своем коде Java.
curl -u admin:admin -H "X-Requested-By: ambari" -X PUT -d '{"Clusters":{"desired_config":{"type":"service-master","tag":"version156898703582004","properties":{"Config_name":"3096"},"service_config_version_note":"New config version curl 1"}}}' "http://[IP Address]:8080/api/v1/clusters/cluster1"
Моя цель - написать JAVA-программу для отправки / обновления конфигурации в Ambari. Я считаю, что мы можем использовать любой сервис для тестирования / обсуждения, например YARN.
Редактирование для добавления этого кода, который находится в Stringформат.
System.out.println(json);
StringEntity params = new StringEntity(json);
httpPost.setEntity(new StringEntity(json.toString()));
На стороне Ambari он дает мне «Информация о стеке должна предоставляться при создании кластера»