【问题标题】:How to submit a spark python job via a rest api call如何通过 rest api 调用提交 spark python 作业
【发布时间】:2021-02-24 21:12:38
【问题描述】:

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

【问题讨论】:

标签: apache-spark


【解决方案1】:

他们为 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'

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

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 检查作业是否已成功启动。

【讨论】:

    【解决方案2】:

    您可以使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多