1

我正在使用 Livy 通过创建运行良好的 jar 文件并在 HDFS 中写入输出来运行 wordcount 示例。现在我想将结果返回到我的 HTML 页面。我正在使用 Spark scala、sbt、HDFS 和 Livy。

GET/batches REST API 仅显示日志和状态。

如何获得输出结果?

或者如何在 Livy 中使用 REST API 读取 HDFS 中的文件?这个你能帮我吗。

提前致谢。

4

2 回答 2

0

您可以在 REST 调用中使用 WebHDFS。首先由您的管理员启用 WebHDFS。

  1. 使用 webHDFS URL
  2. 创建 HttpURLConnection 对象
  3. 将请求方法设置为 GET

然后使用缓冲区阅读器获取输入流。

于 2018-07-13T06:40:23.663 回答
0

如果您使用 curl 检查批次的状态,您将获得 Livy 批处理作业的状态,该状态将显示为已完成(如果 spark 驱动程序已成功启动)。

要读取输出: 1. 您可以使用 paramiko 对运行 hdfs 的机器进行 SSH,然后运行 ​​hdfs dfs -ls / 来检查输出并执行您想要的任务。

  1. 使用 Livy REST API,您需要编写一个执行步骤 1 的脚本,并且可以通过 curl 命令调用该脚本以从 HDFS 获取输出,但在这种情况下,Livy 将启动单独的 spark 驱动程序,输出将来自驱动程序日志。

curl -vvv -u : :/batches -X POST --data '{"file": "http://"}' -H "Content-Type: application/json"

第一个是获得输出的可靠方法,尽管我不能 100% 确定第二种方法的行为。

于 2018-07-13T06:30:16.430 回答