【发布时间】:2021-02-24 21:12:38
【问题描述】:
我知道我们可以通过spark-jobserver 提交一个 jar ,但是我们有很多用python编写的作业,我想知道我们如何通过rest api调用提交python作业或egg文件
【问题讨论】:
-
欢迎来到SO,请看stackoverflow.com/help/how-to-ask
标签: apache-spark
我知道我们可以通过spark-jobserver 提交一个 jar ,但是我们有很多用python编写的作业,我想知道我们如何通过rest api调用提交python作业或egg文件
【问题讨论】:
标签: apache-spark
他们为 python 支持创建了文档
- 如何创建 python 作业的完整文档 - spark-jobserver Python Support Reference
Spark Job Server 通过 Python 特定的上下文工厂
spark.jobserver.python.PythonSparkContextFactory支持 Python 作业。
正如您注意到的,您需要打包 python spark 作业。
为了能够将作业推送到作业服务器,必须将其打包到 Python Egg 文件中。
首先,您需要使用“Python factory”创建带有 HTTP POST /contexts/application-name 上下文的上下文。
curl -X POST 'localhost:8090/contexts/py-context?context-factory=spark.jobserver.python.PythonSparkContextFactory'
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 检查作业是否已成功启动。
【讨论】:
您可以使用Apache Livy(Apache Spark 的 REST 服务)
curl -X POST --data '{"kind": "pyspark"}' -H "Content-Type: application/json" localhost:8998/sessions
curl localhost:8998/sessions/0/statements -X POST -H 'Content-Type: application/json' -d'{"code":"sc.parallelize([1, 2, 3, 4, 5]).count()"}'
【讨论】: