Мы используем Apache Livy для чтения данных из объектного хранилища в кластере Spark.
Apache Livy API: POST http: // server: port / sessions / {sessionId} / statement Полезная нагрузка запроса:
{"code":" val df = spark.read.option(\"header\", true).json(\"xxx://somebucket@somenamespace/xyz\"); \n df.toJSON.collect.mkString(\"[\", \",\", \"]\")"}
Я вижу, как это работает с почтальоном без проблем. Нам нужно вызвать этот API из Java. Когда мы попытались вызвать указанный выше API из приложения Java с помощью клиента Jersey (версия 2.30.1 на Java 11), сервер Apache Livy вернул «Internal Server Error» (500). Код клиента Джерси выглядит так, как показано ниже:
JSONObject payLoad = new JSONObject();
String codeBlock = "val df = spark.read.option(\"header\", true).json(\"xxx://somebucket@somenamespace/xyz\"); \n df.toJSON.collect.mkString(\"[\", \",\", \"]\")";
payLoad.put("code", codeBlock);
// In this e.g, session id: '0' is created before calling the below API
String apacheLivyUrl = "http://localhost:8998/sessions/0/statements";
Response response = ClientBuilder.newBuilder().build().target(apacheLivyUrl)
.request(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.post(Entity.json(payLoad.toString()));
Есть идеи, что здесь не так? Спасибо за ваше время
.accept(MediaType.APPLICATION_JSON)
? - person mangusta   schedule 24.06.2020