Spark Livy Server:Python 脚本如何返回 json 对象?

Posted

技术标签:

【中文标题】Spark Livy Server:Python 脚本如何返回 json 对象?【英文标题】:Spark Livy Server: How does Python script return a json object? 【发布时间】:2016-06-12 13:21:17 【问题描述】:

我们正在使用 Spark 进行 ML 和数据处理,请求来自基于 Web 的 UI 前端。所以我们为此使用了 Livy REST 服务器。代码根据此处的教程正确运行完成: http://gethue.com/how-to-use-the-livy-spark-rest-job-server-api-for-submitting-batch-jar-python-and-streaming-spark-jobs/

但是,我不知道如何返回预期的输出。目前python代码'main'以

结尾
if __name__ == "__main__":

  sc = SparkContext('local')
  #do some spark processing to create 'result' dictionary
  print json.dumps(result, indent=4)

这会将结果发送到 curl localhost:8998/batches/0/log 以及 spark-submit 的所有详细信息。我怎样才能返回 json 对象,以便 Web UI(基于 Node.js)可以查询它,例如 localhost:8998/batches/0/output

【问题讨论】:

【参考方案1】:

您可以将输出存储到 hdfs 中,并且可以使用该文件位置 url 将输出获取到节点。最好使用某个唯一 id 将 python 的输出重定向到 hdfs 中的某个位置,并将该唯一 id 保存在数据库中,以便在获取输出时可以参考该 id 来获取输出文件。

【讨论】:

以上是关于Spark Livy Server:Python 脚本如何返回 json 对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 EMR 集群引导上设置 livy.server.session.timeout?

HUE配置Spark Notebook

Apache Spark和Livy集群

使用 Livy 作为 OS 用户运行 spark 程序

从 Airflow(使用气流 Livy 运算符)向 Livy(在 EMR 中)提交 Spark 作业

Livy原理详解