【问题标题】:How do I run multiple spark jobs in series one after another on Pyspark?如何在 Pyspark 上依次运行多个 Spark 作业?
【发布时间】:2020-03-10 00:27:32
【问题描述】:

目前我有几个 spark-submit *.sh 文件。每个文件都会生成一个用于下一个文件的表。

有没有办法一个接一个地依次运行这些文件?

到目前为止,我尝试在一个文件中一个接一个地添加所有 Spark 提交代码并尝试

sh spark_submit_ordered_combined.sh 

在终端中。 但这会一次性启动所有代码。

任何帮助都会很棒。

【问题讨论】:

  • 作业完成后Spark submit 退出,你是在后台启动spark-submit 吗?如果没有,你能显示你的 bash 脚本的内容吗?

标签: python python-3.x pyspark


【解决方案1】:

您可能需要一个数据管道框架,因为 '下一个文件' 的输入是必需的,而前一个 spark-submit 的输出仍在运行。 Luigi 是一个 Python 框架,可帮助您构建所需的批处理作业管道。一个任务有requires()run()output()方法来控制每个任务之间的工作流和依赖关系。

By extending PySparkTask(用于 PySpark)或 SparkSubmitTask 类并覆盖它们的属性,您的管道将是:

  • Task1:输出文件 1,不需要任务
  • Task2:输出file2,需要file1
  • Task3:输出file3,需要file2
  • ...

这样,一个任务的输入就是另一个任务的输出,以此类推。如果一项任务失败(如 Task3),则只有 Task3 必须重新提交,因为 file1 和 file2 已经存在

【讨论】:

    【解决方案2】:

    看看Apache Airflow

    使用气流将工作流创作为任务的有向无环图 (DAG)。气流调度程序在遵循指定依赖关系的同时在一组工作人员上执行您的任务。

    这里是Getting started with Airflow,这个帖子使用Airflow with Pyspark

    【讨论】:

      猜你喜欢
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 2018-05-21
      相关资源
      最近更新 更多