Bagikan melalui


Tambahkan tugas ke proyek dalam Bundel Aset Databricks

Artikel ini menyediakan contoh berbagai jenis tugas yang dapat Anda tambahkan ke pekerjaan Azure Databricks di Databricks Asset Bundles. Lihat Apa itu Bundel Aset Databricks?.

Sebagian besar tipe tugas pekerjaan memiliki parameter khusus tugas di antara pengaturan yang didukung, tetapi Anda juga dapat menentukan parameter pekerjaan yang diteruskan ke tugas. Referensi nilai dinamis didukung untuk parameter tugas, yang memungkinkan melewatkan nilai khusus untuk pelaksanaan pekerjaan antar tugas. Lihat Apa itu referensi nilai dinamis?.

Catatan

Anda dapat mengambil alih pengaturan tugas pekerjaan. Lihat Menyetel ulang pengaturan tugas pekerjaan di Databricks Asset Bundles.

Tips

Untuk menghasilkan konfigurasi sumber daya dengan cepat untuk pekerjaan yang ada menggunakan Databricks CLI, Anda dapat menggunakan perintah bundle generate job. Lihat perintah bundel.

Tugas buku catatan

Anda menggunakan tugas ini untuk menjalankan buku catatan.

Contoh berikut menambahkan tugas buku catatan ke pekerjaan dan mengatur parameter pekerjaan bernama my_job_run_id. Jalur untuk notebook yang akan disebarkan relatif terhadap berkas konfigurasi di mana tugas ini dideklarasikan. Proses mengambil buku catatan dari lokasi tempat penyebarannya di dalam ruang kerja Azure Databricks.

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      parameters:
        - name: my_job_run_id
          default: '{{job.run_id}}'

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > notebook_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML. Lihat Tugas Notebook untuk pekerjaan.

Tugas pernyataan kondisi if/else

condition_task memungkinkan Anda menambahkan tugas dengan logika kondisi if/else ke proyek Anda. Tugas mengevaluasi kondisi yang dapat digunakan untuk mengontrol eksekusi tugas lain. Tugas kondisi tidak memerlukan kluster untuk dijalankan dan tidak mendukung percobaan ulang atau pemberitahuan. Untuk informasi lebih lanjut tentang tugas if/else, lihat Tambahkan logika percabangan ke pekerjaan dengan tugas if/else.

Contoh berikut berisi tugas bersyarat dan tugas buku catatan, di mana tugas buku catatan hanya dijalankan jika jumlah perbaikan tugas kurang dari 5.

resources:
  jobs:
    my-job:
      name: my-job
      tasks:
        - task_key: condition_task
          condition_task:
            op: LESS_THAN
            left: '{{job.repair_count}}'
            right: '5'
        - task_key: notebook_task
          depends_on:
            - task_key: condition_task
              outcome: 'true'
          notebook_task:
            notebook_path: ../src/notebook.ipynb

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > condition_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML.

Untuk setiap tugas

for_each_task memungkinkan Anda menambahkan tugas dengan loop foreach ke pekerjaan Anda. Tugas menjalankan tugas bertumpuk untuk setiap input yang diberikan. Untuk informasi selengkapnya tentang for_each_task, lihat Menggunakan tugas For each untuk menjalankan tugas lain dalam perulangan.

Contoh berikut menambahkan for_each_task ke tugas, yang mana ia mengulangi nilai-nilai dari tugas lain dan memprosesnya.

resources:
  jobs:
    my_job:
      name: my_job
      tasks:
        - task_key: generate_countries_list
          notebook_task:
            notebook_path: ../src/generate_countries_list.ipnyb
        - task_key: process_countries
          depends_on:
            - task_key: generate_countries_list
          for_each_task:
            inputs: '{{tasks.generate_countries_list.values.countries}}'
            task:
              task_key: process_countries_iteration
              notebook_task:
                notebook_path: ../src/process_countries_notebook.ipnyb

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > for_each_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML.

Tugas Pembuatan Skrip Python

Anda menggunakan tugas ini untuk menjalankan file Python.

Contoh berikut menambahkan tugas skrip Python ke pekerjaan. Jalur untuk file Python yang akan disebarkan relatif terhadap file konfigurasi tempat tugas ini dideklarasikan. Tugas ini mengambil file Python dari lokasi yang sudah dideploy di ruang kerja Azure Databricks.

resources:
  jobs:
    my-python-script-job:
      name: my-python-script-job

      tasks:
        - task_key: my-python-script-task
          spark_python_task:
            python_file: ./my-script.py

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > spark_python_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML. Lihat juga tugas skrip Python untuk pekerjaan.

Tugas roda Python

Anda menggunakan tugas ini untuk menjalankan file roda Python.

Contoh berikut menambahkan tugas roda Python ke pekerjaan. Jalur untuk file wheel Python yang akan disebarkan adalah relatif terhadap file konfigurasi di mana tugas ini dideklarasikan. Lihat dependensi pustaka Bundel Aset Databricks.

resources:
  jobs:
    my-python-wheel-job:
      name: my-python-wheel-job
      tasks:
        - task_key: my-python-wheel-task
          python_wheel_task:
            entry_point: run
            package_name: my_package
          libraries:
            - whl: ./my_package/dist/my_package-*.whl

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > python_wheel_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML. Lihat juga Kembangkan file roda Python menggunakan Bundel Aset Databricks dan tugas roda Python untuk pekerjaan.

Tugas JAR

Anda menggunakan tugas ini untuk menjalankan file JAR. Anda dapat mereferensikan pustaka JAR lokal atau yang ada di ruang kerja, volume Katalog Unity, atau lokasi penyimpanan cloud eksternal. Lihat dependensi pustaka Bundel Aset di Databricks.

Contoh berikut menambahkan tugas JAR ke pekerjaan. Jalur untuk JAR berada di lokasi volume yang ditentukan.

resources:
  jobs:
    my-jar-job:
      name: my-jar-job
      tasks:
        - task_key: my-jar-task
          spark_jar_task:
            main_class_name: org.example.com.Main
          libraries:
            - jar: /Volumes/main/default/my-volume/my-project-0.1.0-SNAPSHOT.jar

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > spark_jar_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML. Lihat tugas JAR untuk pekerjaan.

Tugas file SQL

Anda menggunakan tugas ini untuk menjalankan file SQL yang terletak di ruang kerja atau repositori Git jarak jauh.

Contoh berikut menambahkan tugas file SQL ke pekerjaan. Tugas file SQL ini menggunakan gudang SQL yang ditentukan untuk menjalankan file SQL yang ditentukan.

resources:
  jobs:
    my-sql-file-job:
      name: my-sql-file-job
      tasks:
        - task_key: my-sql-file-task
          sql_task:
            file:
              path: /Users/someone@example.com/hello-world.sql
              source: WORKSPACE
            warehouse_id: 1a111111a1111aa1

Untuk mendapatkan ID gudang SQL, buka halaman pengaturan gudang SQL, lalu salin ID yang ditemukan di tanda kurung setelah nama gudang di bidang Nama pada tab Gambaran Umum .

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > sql_task > file dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML. Lihat Tugas SQL untuk pekerjaan tertentu.

Tugas dalam alur DLT

Anda menggunakan tugas ini untuk menjalankan pipeline DLT. Lihat Apa itu DLT?.

Contoh berikut menambahkan tugas alur DLT ke pekerjaan. Tugas alur DLT ini menjalankan alur yang ditentukan.

resources:
  jobs:
    my-pipeline-job:
      name: my-pipeline-job
      tasks:
        - task_key: my-pipeline-task
          pipeline_task:
            pipeline_id: 11111111-1111-1111-1111-111111111111

Anda bisa mendapatkan ID alur dengan membuka alur di ruang kerja dan menyalin nilai ID Alur pada tab detail Alur dari halaman pengaturan alur.

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > pipeline_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML. Lihat alur kerja DLT untuk pekerjaan.

tugas dbt

Anda menggunakan tugas ini untuk menjalankan satu atau beberapa perintah dbt. Lihat Menyambungkan ke dbt Cloud.

Contoh berikut menambahkan tugas dbt ke proyek. Tugas dbt ini menggunakan gudang SQL yang ditentukan untuk menjalankan perintah dbt yang ditentukan.

resources:
  jobs:
    my-dbt-job:
      name: my-dbt-job
      tasks:
        - task_key: my-dbt-task
          dbt_task:
            commands:
              - 'dbt deps'
              - 'dbt seed'
              - 'dbt run'
            project_directory: /Users/someone@example.com/Testing
            warehouse_id: 1a111111a1111aa1
          libraries:
            - pypi:
                package: 'dbt-databricks>=1.0.0,<2.0.0'

Untuk mendapatkan ID gudang SQL, buka halaman pengaturan gudang SQL, lalu salin ID yang ditemukan di tanda kurung setelah nama gudang di bidang Nama pada tab Gambaran Umum .

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > dbt_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML. Lihat dbt task untuk pekerjaan.

Bundel Aset Databricks juga menyertakan dbt-sql templat proyek yang mendefinisikan sebuah pekerjaan dengan tugas dbt, serta profil dbt untuk pekerjaan dbt yang telah disebarkan. Untuk informasi tentang templat Bundel Aset Databricks, lihat Templat bundel default.

Jalankan tugas pekerjaan

Anda menggunakan tugas ini untuk menjalankan pekerjaan lain.

Contoh berikut berisi tugas menjalankan pekerjaan di pekerjaan kedua yang memicu pekerjaan pertama.

resources:
  jobs:
    my-first-job:
      name: my-first-job
      tasks:
        - task_key: my-first-job-task
          new_cluster:
            spark_version: '13.3.x-scala2.12'
            node_type_id: 'i3.xlarge'
            num_workers: 2
          notebook_task:
            notebook_path: ./src/test.py
    my_second_job:
      name: my-second-job
      tasks:
        - task_key: my-second-job-task
          run_job_task:
            job_id: ${resources.jobs.my-first-job.id}

Contoh ini menggunakan substitusi untuk mengambil ID tugas yang akan dijalankan. Untuk mendapatkan ID pekerjaan dari UI, buka pekerjaan di ruang kerja dan salin ID dari nilai ID Pekerjaan di tab Detail Pekerjaan halaman pengaturan pekerjaan.

Untuk pemetaan tambahan yang dapat Anda tetapkan untuk tugas ini, lihat tasks > run_job_task dalam payload permintaan operasi pembuatan pekerjaan seperti yang didefinisikan dalam POST /api/2.1/jobs/create dalam referensi REST API, yang dinyatakan dalam format YAML.