【问题标题】:Read file created in HDFS with Livy使用 Livy 读取在 HDFS 中创建的文件
【发布时间】:2018-07-13 23:11:41
【问题描述】:

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

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

如何获得输出结果?

或者我如何在 Livy 中使用 REST API 读取 HDFS 中的文件?请帮我解决这个问题。

提前致谢。

【问题讨论】:

    标签: scala apache-spark sbt livy


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多