Чтение файла, созданного в HDFS с Livy
Я использую Livy для запуска примера wordcount, создавая файл jar, который работает отлично, и записывая вывод в HDFS. Теперь я хочу вернуть результат на мою HTML-страницу. Я использую Spark Scala, SBT, HDFS и Livy.
API REST GET / batch отображает только журнал и состояние.
Как я могу получить выходные результаты?
Или как я могу прочитать файл в HDFS, используя REST API в Livy? Пожалуйста, помогите мне с этим.
Заранее спасибо.
2 ответа
Вы можете использовать WebHDFS в своем вызове REST. Сначала включите WebHDFS, используя Admin.
- Используйте URL-адрес webHDFS
- Создать объект HttpURLConnection
- Установить метод запроса как GET
затем используйте читатель буфера для getInputStream.
Если вы проверите статус для пакетов с помощью curl, вы получите статус пакетного задания Livy, которое будет завершено (если драйвер спуска запустился успешно).
Чтобы прочитать вывод: 1. Вы можете использовать SSH с помощью paramiko на машине, на которой работает hdfs, и запустить hdfs dfs -ls /, чтобы проверить вывод и выполнить желаемые задачи.
- Используя Livy rest API, вам нужно написать сценарий, который выполняет шаг 1, и этот сценарий можно вызвать с помощью команды curl для извлечения выходных данных из HDFS, но в этом случае Livy запустит отдельный драйвер искры, и вывод поступит в STDOUT журналы драйверов.
curl -vvv -u:: / batches -X POST --data '{"file": "http: //"}' -H "Тип содержимого: application/json"
Первый - это верный способ получить результат, хотя я не уверен на 100%, как поведет себя второй подход.