搭配使用 YAML 檔案和工作流程

您可以在 YAML 檔案中定義工作流程範本,接著將範本例項化來執行工作流程,也可以匯入及匯出工作流程範本的 YAML 檔案,以便建立及更新 Dataproc 工作流程範本資源。

透過 YAML 檔案執行工作流程

如要執行工作流程,但不想先建立工作流程範本資源,請執行 gcloud dataproc workflow-templates instantiate-from-file 指令。

  1. 在 YAML 檔案中定義工作流程範本。YAML 檔案須包含所有必要的 WorkflowTemplate 欄位 (id 欄位除外),且不得包含 version 欄位和任何僅限輸出的欄位。在下列工作流程範例中,terasort 步驟中的 prerequisiteStepIds 清單可以確保 teragen 步驟順利完成後,才會開始執行 terasort 步驟。
    jobs:
    - hadoopJob:
        args:
        - teragen
        - '1000'
        - hdfs:///gen/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: teragen
    - hadoopJob:
        args:
        - terasort
        - hdfs:///gen/
        - hdfs:///sort/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: terasort
      prerequisiteStepIds:
        - teragen
    placement:
      managedCluster:
        clusterName: my-managed-cluster
        config:
          gceClusterConfig:
            zoneUri: us-central1-a
    
  2. 執行工作流程:
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

使用 YAML 檔案和 Dataproc 自動選擇可用區位置功能,將工作流程例項化

  1. 在 YAML 檔案中定義工作流程範本。這個 YAML 檔案與先前的相同,但 zoneUri 欄位設為空字串 (''),由 Dataproc 的自動選擇可用區位置功能選取叢集可用區。
    jobs:
    - hadoopJob:
        args:
        - teragen
        - '1000'
        - hdfs:///gen/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: teragen
    - hadoopJob:
        args:
        - terasort
        - hdfs:///gen/
        - hdfs:///sort/
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: terasort
      prerequisiteStepIds:
        - teragen
    placement:
      managedCluster:
        clusterName: my-managed-cluster
        config:
          gceClusterConfig:
            zoneUri: ''
    
  2. 執行工作流程。使用自動選擇可用區位置功能時,必須將區域傳遞至 gcloud 指令。
    gcloud dataproc workflow-templates instantiate-from-file \
        --file=TEMPLATE_YAML \
        --region=REGION
    

匯入及匯出工作流程範本 YAML 檔案

您可以匯入及匯出工作流程範本 YAML 檔案。工作流程範本通常會先匯出為 YAML 檔案,經過編輯之後,再重新匯入來更新範本。

  1. 將工作流程範本匯出為 YAML 檔案。系統會在匯出過程中篩除輸出內容的 idversion 欄位,以及所有僅供輸出的欄位,因此這些欄位不會顯示在匯出的 YAML 檔案中。

    gcloud dataproc workflow-templates export TEMPLATE_ID or TEMPLATE_NAME \
        --destination=TEMPLATE_YAML \
        --region=REGION
    
    您可以將 WorkflowTemplate id 或完整範本資源 name ("projects/PROJECT_ID/regions/REGION/workflowTemplates/TEMPLATE_ID") 傳遞至指令。

  2. 在本機編輯 YAML 檔案。請注意,匯入的 YAML 檔案不得有 idversion 和僅供輸出的欄位,範本匯出時已篩除這些欄位。

  3. 匯入更新過的工作流程範本 YAML 檔案:

    gcloud dataproc workflow-templates import TEMPLATE_ID or TEMPLATE_NAME \
        --source=TEMPLATE_YAML \
        --region=REGION
    
    您可以將 WorkflowTemplate id 或完整範本資源 name ("projects/PROJECT_ID/regions/region/workflowTemplates/TEMPLATE_ID") 傳遞至指令。系統會覆寫 (更新) 名稱相同的範本資源,並遞增版本號碼。如果沒有名稱相同的資源,則會建立新範本。