在 dataproc/gcp 中顺序执行多个 spark 作业

Sequential execution of multiple spark jobs in dataproc / gcp

我想在 gcp 中依次启动多个 spark 作业,例如

gcloud dataproc jobs submit spark file1.py
gcloud dataproc jobs submit spark file2.py
...

以便其中一个作业的执行恰好在前一个作业的执行完成时开始。

有什么办法吗?

这可以使用 Dataproc Workflows templates

来完成

此工作流将创建和删除集群作为工作流的一部分。

您可以按照以下步骤创建工作流:

  1. 创建您的工作流模板
export REGION=us-central1

gcloud dataproc workflow-templates create workflow-id \
  --region $REGION
  1. 设置将用于作业的 Dataproc 集群类型
gcloud dataproc workflow-templates set-managed-cluster workflow-id \
    --region $REGION \ 
    --master-machine-type machine-type \ 
    --worker-machine-type machine-type \ 
    --num-workers number \ 
    --cluster-name cluster-name
  1. 将作业作为步骤添加到您的工作流程中
gcloud dataproc workflow-templates add-job pyspark gs://bucket-name/file1.py \
    --region $REGION \ 
    --step-id job1 \ 
    --workflow-template workflow-id

第二个作业需要参数 --start-after 以确保它在第一个作业之后运行。

gcloud dataproc workflow-templates add-job pyspark gs://bucket-name/file2.py \
    --region $REGION \ 
    --step-id job2 \ 
    --start-after job1 \ 
    --workflow-template workflow-id
  1. 运行工作流程
gcloud dataproc workflow-templates instantiate template-id \
    --region $REGION \