Mengesampingkan dengan pengaturan target

Halaman ini menjelaskan cara mengganti atau menggabungkan pengaturan tingkat atas dengan pengaturan target di Bundel Otomatisasi Deklaratif. Untuk informasi tentang pengaturan target bundel, lihat target.

Penimpaan pengaturan artefak

Anda dapat mengambil alih pengaturan artefak dalam pemetaan tingkat artifacts atas dengan pengaturan artefak dalam targets pemetaan, misalnya:

# ...
artifacts:
  <some-unique-programmatic-identifier-for-this-artifact>:
    # Artifact settings.

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    artifacts:
      <the-matching-programmatic-identifier-for-this-artifact>:
        # Any more artifact settings to join with the settings from the
        # matching top-level artifacts mapping.

Jika ada pengaturan artefak yang didefinisikan dalam pemetaan artifacts tingkat atas dan pemetaan targets untuk artefak yang sama, maka pengaturan dalam pemetaan targets lebih diutamakan daripada pengaturan dalam pemetaan artifacts tingkat atas.

Contoh 1: Pengaturan artefak hanya ditentukan dalam pemetaan artefak tingkat atas

Untuk menunjukkan cara kerjanya dalam praktiknya, dalam contoh berikut, path didefinisikan dalam pemetaan tingkat artifacts atas, yang menentukan semua pengaturan untuk artefak:

# ...
artifacts:
  my-artifact:
    type: whl
    path: ./my_package
# ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah:

{
  "...": "...",
  "artifacts": {
    "my-artifact": {
      "type": "whl",
      "path": "./my_package",
      "...": "..."
    }
  },
  "...": "..."
}

Contoh 2: Pengaturan artifak yang saling bertentangan yang ditentukan dalam beberapa pemetaan artifak

Dalam contoh ini, path didefinisikan baik dalam pemetaan pada level artifacts teratas maupun dalam pemetaan artifacts di targets. Dalam contoh ini, path dalam artifacts pemetaan lebih diutamakan targets dalam path pemetaan tingkat artifacts atas, untuk menentukan pengaturan artefak:

# ...
artifacts:
  my-artifact:
    type: whl
    path: ./my_package

targets:
  dev:
    artifacts:
      my-artifact:
        path: ./my_other_package
    # ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah:

{
  "...": "...",
  "artifacts": {
    "my-artifact": {
      "type": "whl",
      "path": "./my_other_package",
      "...": "..."
    }
  },
  "...": "..."
}

Penimpaan pengaturan kluster

Anda dapat menggantikan atau menggabungkan pengaturan kluster pekerjaan atau pipeline untuk target tertentu.

Untuk pekerjaan, gunakan job_cluster_key dalam definisi pekerjaan untuk mengidentifikasi pengaturan kluster pekerjaan di pemetaan tingkat resources atas untuk bergabung dengan pengaturan kluster pekerjaan dalam targets pemetaan:

# ...
resources:
  jobs:
    <some-unique-programmatic-identifier-for-this-job>:
      # ...
      job_clusters:
        - job_cluster_key: <some-unique-programmatic-identifier-for-this-key>
          new_cluster:
            # Cluster settings.

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    resources:
      jobs:
        <the-matching-programmatic-identifier-for-this-job>:
          # ...
          job_clusters:
            - job_cluster_key: <the-matching-programmatic-identifier-for-this-key>
              # Any more cluster settings to join with the settings from the
              # resources mapping for the matching top-level job_cluster_key.
          # ...

Jika ada pengaturan kluster yang didefinisikan baik dalam pemetaan resources tingkat atas maupun targets untuk job_cluster_key yang sama, maka pengaturan dalam pemetaan targets lebih diutamakan daripada pengaturan dalam pemetaan resources tingkat atas.

Untuk Lakeflow Spark Declarative Pipelines, gunakan label dalam pengaturan kluster definisi alur kerja untuk mengidentifikasi pengaturan kluster dalam pemetaan tingkat atas resources untuk menggabungkan dengan pengaturan kluster dalam pemetaan targets, misalnya:

# ...
resources:
  pipelines:
    <some-unique-programmatic-identifier-for-this-pipeline>:
      # ...
      clusters:
        - label: default | maintenance
          # Cluster settings.

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    resources:
      pipelines:
        <the-matching-programmatic-identifier-for-this-pipeline>:
          # ...
          clusters:
            - label: default | maintenance
              # Any more cluster settings to join with the settings from the
              # resources mapping for the matching top-level label.
          # ...

Jika ada pengaturan kluster yang didefinisikan baik dalam pemetaan resources tingkat atas maupun targets untuk label yang sama, maka pengaturan dalam pemetaan targets lebih diutamakan daripada pengaturan dalam pemetaan resources tingkat atas.

Contoh 1: Pengaturan kluster pekerjaan baru yang ditentukan dalam beberapa pemetaan sumber daya dan tanpa konflik pengaturan

Dalam contoh ini, spark_version dalam pemetaan tingkat atas resources dikombinasikan dengan node_type_id dan num_workers dalam pemetaan resources di targets untuk menentukan pengaturan untuk job_cluster_key yang bernama my-cluster:

# ...
resources:
  jobs:
    my-job:
      name: my-job
      job_clusters:
        - job_cluster_key: my-cluster
          new_cluster:
            spark_version: 13.3.x-scala2.12

targets:
  development:
    resources:
      jobs:
        my-job:
          name: my-job
          job_clusters:
            - job_cluster_key: my-cluster
              new_cluster:
                node_type_id: Standard_DS3_v2
                num_workers: 1
          # ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah sebagai berikut:

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "job_clusters": [
          {
            "job_cluster_key": "my-cluster",
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 1,
              "spark_version": "13.3.x-scala2.12"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Contoh 2: Pengaturan klaster tugas baru yang bertentangan yang ditentukan dalam beberapa pemetaan sumber daya

Dalam contoh ini, spark_version, dan num_workers didefinisikan baik dalam pemetaan tingkat resources atas maupun dalam resources pemetaan di targets. Dalam contoh ini, spark_version dan num_workers dalam pemetaan resources di targets diutamakan daripada spark_version dan num_workers dalam pemetaan tingkat tertinggi resources, untuk menentukan pengaturan untuk job_cluster_key yang diberi nama my-cluster.

# ...
resources:
  jobs:
    my-job:
      name: my-job
      job_clusters:
        - job_cluster_key: my-cluster
          new_cluster:
            spark_version: 13.3.x-scala2.12
            node_type_id: Standard_DS3_v2
            num_workers: 1

targets:
  development:
    resources:
      jobs:
        my-job:
          name: my-job
          job_clusters:
            - job_cluster_key: my-cluster
              new_cluster:
                spark_version: 12.2.x-scala2.12
                num_workers: 2
          # ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah sebagai berikut:

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "job_clusters": [
          {
            "job_cluster_key": "my-cluster",
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 2,
              "spark_version": "12.2.x-scala2.12"
            }
          }
        ],
        "...": "..."
      }
    }
  }
}

Contoh 3: Pengaturan kluster pipeline yang ditentukan dalam berbagai pemetaan sumber daya tanpa konflik pengaturan

Dalam contoh ini, node_type_id dalam pemetaan resources tingkat atas dikombinasikan dengan num_workers dalam pemetaan resources di targets untuk menentukan pengaturan untuk label bernama default:

# ...
resources:
  pipelines:
    my-pipeline:
      clusters:
        - label: default
          node_type_id: Standard_DS3_v2

targets:
  development:
    resources:
      pipelines:
        my-pipeline:
          clusters:
            - label: default
              num_workers: 1
          # ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah sebagai berikut:

{
  "...": "...",
  "resources": {
    "pipelines": {
      "my-pipeline": {
        "clusters": [
          {
            "label": "default",
            "node_type_id": "Standard_DS3_v2",
            "num_workers": 1
          }
        ],
        "...": "..."
      }
    }
  }
}

Contoh 4: Pengaturan kluster alur yang bertentangan yang ditentukan dalam beberapa pemetaan sumber daya

Dalam contoh ini, num_workers didefinisikan baik dalam pemetaan pada level resources teratas maupun dalam pemetaan resources di targets. num_workers dalam pemetaan resources di targets lebih diutamakan daripada num_workers dalam pemetaan tingkat teratas resources, untuk mendefinisikan pengaturan untuk label yang bernama default:

# ...
resources:
  pipelines:
    my-pipeline:
      clusters:
        - label: default
          node_type_id: Standard_DS3_v2
          num_workers: 1

targets:
  development:
    resources:
      pipelines:
        my-pipeline:
          clusters:
            - label: default
              num_workers: 2
          # ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah sebagai berikut:

{
  "...": "...",
  "resources": {
    "pipelines": {
      "my-pipeline": {
        "clusters": [
          {
            "label": "default",
            "node_type_id": "Standard_DS3_v2",
            "num_workers": 2
          }
        ],
        "...": "..."
      }
    }
  }
}

Penggantian pengaturan tugas kerja

Anda dapat menggunakan tasks pemetaan dalam definisi pekerjaan untuk menghubungkan pengaturan pekerjaan dalam pemetaan tingkat atas resources dengan pengaturan pekerjaan dalam targets pemetaan, misalnya:

# ...
resources:
  jobs:
    <some-unique-programmatic-identifier-for-this-job>:
      # ...
      tasks:
        - task_key: <some-unique-programmatic-identifier-for-this-task>
          # Task settings.

targets:
  <some-unique-programmatic-identifier-for-this-target>:
    resources:
      jobs:
        <the-matching-programmatic-identifier-for-this-job>:
          # ...
          tasks:
            - task_key: <the-matching-programmatic-identifier-for-this-key>
              # Any more task settings to join with the settings from the
              # resources mapping for the matching top-level task_key.
          # ...

Untuk menggabungkan pemetaan tingkat atas resources dan pemetaan targets untuk tugas yang sama, pemetaan tugas task_key harus disetel ke nilai yang sama.

Jika ada pengaturan tugas pekerjaan yang didefinisikan baik di dalam pemetaan tingkat atas resources maupun pemetaan targets untuk task yang sama, maka pengaturan dalam pemetaan targets lebih diutamakan daripada pengaturan dalam pemetaan tingkat atas resources.

Contoh 1: Pengaturan tugas pekerjaan yang ditentukan dalam beberapa pemetaan sumber daya dan tanpa konflik pengaturan

Dalam contoh ini, spark_version dalam pemetaan tingkat atas resources dikombinasikan dengan node_type_id dan num_workers dalam pemetaan resources di targets untuk menentukan pengaturan untuk task_key yang bernama my-task:

# ...
resources:
  jobs:
    my-job:
      name: my-job
      tasks:
        - task_key: my-key
          new_cluster:
            spark_version: 13.3.x-scala2.12

targets:
  development:
    resources:
      jobs:
        my-job:
          name: my-job
          tasks:
            - task_key: my-task
              new_cluster:
                node_type_id: Standard_DS3_v2
                num_workers: 1
          # ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah sebagai berikut (elipsis menunjukkan konten yang dihilangkan, untuk brevity):

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "tasks": [
          {
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 1,
              "spark_version": "13.3.x-scala2.12"
            },
            "task-key": "my-task"
          }
        ],
        "...": "..."
      }
    }
  }
}

Contoh 2: Pengaturan tugas pekerjaan yang bertentangan ditentukan dalam beberapa pemetaan sumber daya

Dalam contoh ini, spark_version, dan num_workers didefinisikan baik dalam pemetaan tingkat resources atas maupun dalam resources pemetaan di targets. spark_version dan num_workers dalam pemetaan resources lebih diutamakan daripada targets dan spark_version dalam pemetaan tingkat atas num_workers. Ini mendefinisikan pengaturan untuk task_key yang bernama my-task (elipsi menunjukkan konten yang dihilangkan, untuk singkatnya):

# ...
resources:
  jobs:
    my-job:
      name: my-job
      tasks:
        - task_key: my-task
          new_cluster:
            spark_version: 13.3.x-scala2.12
            node_type_id: Standard_DS3_v2
            num_workers: 1

targets:
  development:
    resources:
      jobs:
        my-job:
          name: my-job
          tasks:
            - task_key: my-task
              new_cluster:
                spark_version: 12.2.x-scala2.12
                num_workers: 2
          # ...

Saat Anda menjalankan databricks bundle validate untuk contoh ini, grafik yang dihasilkan adalah sebagai berikut:

{
  "...": "...",
  "resources": {
    "jobs": {
      "my-job": {
        "tasks": [
          {
            "new_cluster": {
              "node_type_id": "Standard_DS3_v2",
              "num_workers": 2,
              "spark_version": "12.2.x-scala2.12"
            },
            "task_key": "my-task"
          }
        ],
        "...": "..."
      }
    }
  }
}