Delen via


Taken toevoegen aan banen in Databricks Asset Bundles

Dit artikel bevat voorbeelden van verschillende soorten taken die u kunt toevoegen aan Azure Databricks-taken in Databricks Asset Bundles. Bekijk wat zijn Databricks Asset Bundles?.

De meeste taaktaaktypen hebben taakspecifieke parameters onder de ondersteunde instellingen, maar u kunt ook taakparameters definiëren die worden doorgegeven aan taken. Dynamische waardeverwijzingen worden ondersteund voor taakparameters, waardoor waarden kunnen worden doorgegeven die specifiek zijn voor de taak die tussen taken wordt uitgevoerd. Zie Wat is een verwijzing naar dynamische waarden?

Notitie

U kunt taaktaakinstellingen overschrijven. Zie Taaktakeninstellingen overschrijven in Databricks Asset Bundles.

Tip

Als u snel resourceconfiguratie wilt genereren voor een bestaande taak met behulp van de Databricks CLI, kunt u de bundle generate job opdracht gebruiken. Zie bundelopdrachten.

Notebook-taak

U gebruikt deze taak om een notitieboek uit te voeren.

In het volgende voorbeeld wordt een notebooktaak aan een taak toegevoegd en wordt een taakparameter met de naam my_job_run_idingesteld. Het pad voor de te implementeren notebook is relatief ten opzichte van het configuratiebestand waarin deze taak wordt gespecificeerd. De taak haalt het notebook op vanaf de geïmplementeerde locatie in de Azure Databricks-werkruimte.

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}}'

Voor aanvullende mapping-opties die u voor deze taak kunt instellen, raadpleegt u tasks > notebook_task in de payload van het verzoek in de aanmaakbewerking van een taak zoals gedefinieerd door POST /api/2.1/jobs/create in de REST API-referentie, in YAML-formaat. Zie Notebook-taak voor opdrachten.

If/else conditie opdracht

Met de condition_task kunt u een taak toevoegen met if/else-voorwaardelijke logica aan uw taak. De taak evalueert een voorwaarde die kan worden gebruikt om de uitvoering van andere taken te beheren. De voorwaardetaak vereist geen cluster om uit te voeren en biedt geen ondersteuning voor nieuwe pogingen of meldingen. Zie Vertakkingslogica toevoegen aan een taak met de if/else-taakvoor meer informatie over de if/else-taak.

Het volgende voorbeeld bevat een voorwaardetaak en een notebooktaak, waarbij de notebooktaak alleen wordt uitgevoerd als het aantal taakreparaties kleiner is dan 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

Voor aanvullende koppelingen die u voor deze taak kunt instellen, raadpleegt u tasks > condition_task in de payload van het verzoek bij het maken van de taak zoals gedefinieerd in de REST API-referentie, POST /api/2.1/jobs/create, uitgedrukt in YAML-formaat.

Voor elke taak

Met de for_each_task kunt u een taak met een 'for each'-lus aan uw opdracht toevoegen. De taak voert een geneste taak uit voor elke gegeven invoer. Zie voor meer informatie over de for_each_task. Gebruik een For each-taak om een andere taak in een lus uit te voeren.

In het volgende voorbeeld wordt een for_each_task aan een taak toegevoegd, waarbij deze de waarden van een andere taak doorloopt en verwerkt.

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

Voor aanvullende toewijzingen die u voor deze taak kunt instellen, raadpleegt u tasks > for_each_task in de payload van het verzoek bij het maken van een taak zoals gedefinieerd in POST /api/2.1/jobs/create in de REST API-referentie, in YAML-formaat.

Python-script taak

U gebruikt deze taak om een Python-bestand uit te voeren.

In het volgende voorbeeld wordt een Python-scripttaak aan een taak toegevoegd. Het pad voor het te implementeren Python-bestand is relatief ten opzichte van het configuratiebestand waarin deze taak wordt gedeclareerd. De taak haalt het Python-bestand op van de geïmplementeerde locatie in de Azure Databricks-werkruimte.

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

Voor aanvullende toewijzingen die u voor deze taak kunt instellen, raadpleegt u tasks > spark_python_task in de payload van het verzoek bij het maken van een taak zoals gedefinieerd in POST /api/2.1/jobs/create in de REST API-referentie, in YAML-formaat. Zie ook Python-scripttaak voor opdrachten.

Pythonwieltaak

U gebruikt deze taak om een Python-wielbestand uit te voeren.

In het volgende voorbeeld wordt een Python-wieltaak aan een taak toegevoegd. Het pad voor het Python-wielbestand dat moet worden geïmplementeerd, is relatief ten opzichte van het configuratiebestand waarin deze taak wordt gedeclareerd. Zie bibliotheekafhankelijkheden van Databricks Asset Bundles.

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

Voor extra toewijzingen die u voor deze taak kunt instellen, raadpleegt u tasks > python_wheel_task in de verzoekpayload van de functie voor het creëren van een job zoals gedefinieerd in POST /api/2.1/jobs/create in de REST API-referentie, uitgedrukt in YAML-formaat. Zie ook Een Python-wielbestand ontwikkelen met behulp van Databricks Asset Bundles en Python Wheel-taak voor taken.

JAR-taak

U gebruikt deze taak om een JAR uit te voeren. U kunt verwijzen naar lokale JAR-bibliotheken of bibliotheken in een werkruimte, een Unity Catalog-volume of een externe cloudopslaglocatie. Zie bibliotheekafhankelijkheden van Databricks Asset Bundles.

In het volgende voorbeeld wordt een JAR-taak aan een taak toegevoegd. Het pad voor de JAR is naar de opgegeven volumelocatie.

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

Voor aanvullende toewijzingen die u voor deze taak kunt instellen, raadpleegt u tasks > spark_jar_task in de payload van het verzoek bij het maken van een taak zoals gedefinieerd in POST /api/2.1/jobs/create in de REST API-referentie, in YAML-formaat. Zie JAR-taak voor taken.

SQL-bestandstaak

U gebruikt deze taak om een SQL-bestand uit te voeren dat zich in een werkruimte of een externe Git-opslagplaats bevindt.

In het volgende voorbeeld wordt een SQL-bestandstaak aan een taak toegevoegd. Deze SQL-bestandstaak maakt gebruik van het opgegeven SQL-warehouse om het opgegeven SQL-bestand uit te voeren.

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

Als u de id van een SQL Warehouse wilt ophalen, opent u de instellingenpagina van het SQL-magazijn en kopieert u de id tussen haakjes achter de naam van het magazijn in het veld Naam op het tabblad Overzicht .

Voor aanvullende toewijzingen die u voor deze taak kunt instellen, kunt u tasks > sql_task > file vinden in de payload van het verzoek van de 'create job'-bewerking zoals gedefinieerd in POST /api/2.1/jobs/create in de REST API-referentie, in YAML-formaat. Zie SQL-taak voor banen.

DLT-pijplijntaak

U gebruikt deze taak om een DLT-pijplijn uit te voeren. Zie Wat is DLT?.

In het volgende voorbeeld wordt een DLT-pijplijntaak aan een taak toegevoegd. Met deze DLT-pijplijntaak wordt de opgegeven pijplijn uitgevoerd.

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

U kunt de id van een pijplijn ophalen door de pijplijn in de werkruimte te openen en de waarde van de pijplijn-id te kopiëren op het tabblad Pijplijndetails van de pagina Instellingen van de pijplijn.

Voor aanvullende toewijzingen die u voor deze taak kunt instellen, raadpleegt u tasks > pipeline_task in de payload van het verzoek bij de create job operatie, zoals gedefinieerd in POST /api/2.1/jobs/create in de REST API-referentie, in YAML-formaat. Zie DLT-pijplijntaak voor banen.

dbt-taak

U gebruikt deze taak om een of meer dbt-opdrachten uit te voeren. Zie Verbinding maken met dbt Cloud.

In het volgende voorbeeld wordt een dbt-taak aan een taak toegevoegd. Deze dbt-taak maakt gebruik van het opgegeven SQL-warehouse om de opgegeven dbt-opdrachten uit te voeren.

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'

Als u de id van een SQL Warehouse wilt ophalen, opent u de instellingenpagina van het SQL-magazijn en kopieert u de id tussen haakjes achter de naam van het magazijn in het veld Naam op het tabblad Overzicht .

Voor aanvullende toewijzingen die u voor deze taak kunt instellen, raadpleegt u tasks > dbt_task in de payload van het verzoek bij het maken van een taak zoals gedefinieerd in POST /api/2.1/jobs/create in de REST API-referentie, in YAML-formaat. Zie dbt-taak voor taken.

Databricks Asset Bundles bevat ook een dbt-sql projectsjabloon die een taak definieert met een dbt-taak, evenals dbt-profielen voor geïmplementeerde dbt-taken. Zie Standaardbundelsjablonenvoor meer informatie over sjablonen voor Databricks Asset Bundles.

Taaktaak uitvoeren

U gebruikt deze taak om een andere taak uit te voeren.

Het volgende voorbeeld bevat een uitvoeringstaak in de tweede taak die de eerste taak afhandelt.

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}

In dit voorbeeld wordt een substitutie gebruikt om de ID van de uit te voeren taak op te halen. Als u de id van een taak wilt ophalen uit de gebruikersinterface, opent u de taak in de werkruimte en kopieert u de id van de taak-id op het tabblad Taakgegevens van de pagina Instellingen van de taken.

Voor aanvullende toewijzingen die u voor deze taak kunt instellen, kunt u tasks > run_job_task raadplegen in de payload van het verzoek voor het aanmaken van een taak, zoals beschreven onder POST /api/2.1/jobs/create in de REST API-referentie, weergegeven in YAML-formaat.