如何通过rest api调用提交spark python作业

时间:2016-09-26 07:29:43

标签: apache-spark

我知道我们可以通过spark-jobserver提交一个jar ,但我们有很多用python编写的工作,我想知道如何通过rest api调用提交python工作或egg文件

2 个答案:

答案 0 :(得分:0)

他们已经为python支持创建了文档

- 完整文档如何创建python作业 - spark-jobserver Python Support Reference

  

Spark Job Server通过特定于Python的上下文工厂spark.jobserver.python.PythonSparkContextFactory支持Python作业。

就像你注意到你需要打包python spark job。

  

为了能够将作业推送到作业服务器,必须将其打包到Python Egg文件中。

首先,您需要使用“Python工厂”创建HTTP POST / contexts / application-name上下文的上下文。

  

curl -X POST 'localhost:8090/contexts/py-context?context-factory=spark.jobserver.python.PythonSparkContextFactory'

  • 成功创建上下文后,您必须打包作业。他们建议使用setuptools - 检查Packaging a job)。
  • 打包作业后,您需要使用例如上传鸡蛋文件。卷曲。
  

curl --data-binary @dist/my_job_package-0.0.0-py2.7.egg \ -H 'Content-Type: application/python-archive' localhost:8090/binaries/my_py_job

如果完成此步骤,您可以使用spark-jobserver作业API检查作业是否已成功启动。

答案 1 :(得分:0)

您可以使用 Apache Livy(Apache Spark 的 REST 服务)

  1. 您需要创建一个 pyspark 会话:

curl -X POST --data '{"kind": "pyspark"}' -H "Content-Type: application/json" localhost:8998/sessions

  1. 提交您的代码:

curl localhost:8998/sessions/0/statements -X POST -H 'Content-Type: application/json' -d'{"code":"sc.parallelize([1, 2, 3, 4, 5]).count()"}'

Documentation