Udostępnij przez


Przykłady konfiguracji pakietu

Ten artykuł zawiera przykładową konfigurację funkcji pakietów zasobów usługi Databricks i typowych przypadków użycia pakietu.

Kompletne przykłady pakietów, opisane w poniższej tabeli, są dostępne w repozytorium GitHub bundle-examples:

Nazwa pakietu Opis
app_with_database Pakiet z aplikacją Databricks, wspieraną przez bazę danych Postgres OLTP
dashboard_nyc_taxi Pakiet z pulpitem nawigacyjnym AI/BI i zadaniem, które przechwytuje jego migawkę i wysyła ją w wiadomości e-mail do subskrybenta.
database_with_catalog Pakiet definiujący wystąpienie bazy danych OLTP i katalog bazy danych
databricks_app Pakiet definiujący aplikację Databricks
klaster_rozwojowy Pakiet, który definiuje i wykorzystuje klaster deweloperski (uniwersalny)
job_read_secret Pakiet, który definiuje tajny zakres i zadanie z zadaniem odczytującym z niego
zadanie_z_kilkoma_kółkami Pakiet, który definiuje zadanie z wieloma zależnościami koła i używa go
job_with_run_job_tasks Pakiet z wieloma zadaniami zawierający zadania uruchamiania zadań
job_with_sql_notebook Pakiet z zadaniem wykorzystującym funkcję notesu SQL
pipeline_with_schema Pakiet, który definiuje schemat Unity Catalog i potok, który go używa
private_wheel_packages Pakiet korzystający z pakietu prywatnego koła z zadania
python_wheel_poetry Pakiet, który tworzy whl za pomocą Poetry
serverless_job Pakiet, który używa bezserwerowych zasobów obliczeniowych do uruchamiania zadania
share_files_across_bundles Pakiet zawierający pliki znajdujące się poza katalogiem głównym pakietu.
spark_jar_task Zestaw, który definiuje i wykorzystuje zadanie Spark JAR
zapisz_z_zadania_na_wolumin Pakiet, który zapisuje plik w woluminie Unity Catalog

Scenariusze pakietu

Ta sekcja zawiera przykłady konfiguracji, które pokazują użycie mapowań pakietów najwyższego poziomu. Zobacz Informacje o konfiguracji.

pakiet, który przekazuje plik JAR do Unity Catalog

Woluminy Unity Catalog można określić jako ścieżkę artefaktu, aby wszystkie artefakty, takie jak pliki JAR i pliki koła, były przekazywane do woluminów Unity Catalog. Poniższy przykładowy pakiet buduje i przesyła plik JAR do Unity Catalog. Aby uzyskać informacje o mapowaniu artifact_path, zobacz artifact_path. Aby uzyskać informacje na temat artifacts, odwołaj się do artefaktów .

bundle:
  name: jar-bundle

workspace:
  host: https://myworkspace.cloud.databricks.com
  artifact_path: /Volumes/main/default/my_volume

artifacts:
  my_java_code:
    path: ./sample-java
    build: 'javac PrintArgs.java && jar cvfm PrintArgs.jar META-INF/MANIFEST.MF PrintArgs.class'
    files:
      - source: ./sample-java/PrintArgs.jar

resources:
  jobs:
    jar_job:
      name: 'Spark Jar Job'
      tasks:
        - task_key: SparkJarTask
          new_cluster:
            num_workers: 1
            spark_version: '14.3.x-scala2.12'
            node_type_id: 'i3.xlarge'
          spark_jar_task:
            main_class_name: PrintArgs
          libraries:
            - jar: ./sample-java/PrintArgs.jar

Konfiguracja zadania

Ta sekcja zawiera przykłady konfiguracji zadań. Aby uzyskać szczegółowe informacje o konfiguracji zadania, zobacz zadanie.

Zadanie korzystające z obliczeń bezserwerowych

Pakiety zasobów usługi Databricks obsługują zadania uruchamiane na bezserwerowych obliczeniach. Zobacz Run your Lakeflow Jobs with serverless compute for workflows (Uruchamianie zadań lakeflow z bezserwerowymi obliczeniami dla przepływów pracy). Aby to skonfigurować, możesz pominąć ustawienie clusters dla zadania typu notebook lub określić środowisko, jak pokazano w przykładach poniżej. W przypadku skryptów Python, wheel Python i zadań dbt, environment_key jest wymagana dla obliczeń bezserwerowych. Zobacz environment_key.

# A serverless job (no cluster definition)
resources:
  jobs:
    serverless_job_no_cluster:
      name: serverless_job_no_cluster

      email_notifications:
        on_failure:
          - someone@example.com

      tasks:
        - task_key: notebook_task
          notebook_task:
            notebook_path: ../src/notebook.ipynb
# A serverless job (environment spec)
resources:
  jobs:
    serverless_job_environment:
      name: serverless_job_environment

      tasks:
        - task_key: task
          spark_python_task:
            python_file: ../src/main.py

          # The key that references an environment spec in a job.
          # https://docs.databricks.com/api/workspace/jobs/create#tasks-environment_key
          environment_key: default

      # A list of task execution environment specifications that can be referenced by tasks of this job.
      environments:
        - environment_key: default

          # Full documentation of this spec can be found at:
          # https://docs.databricks.com/api/workspace/jobs/create#environments-spec
          spec:
            environment_version: '2'
            dependencies:
              - my-library

Zadanie z wieloma plikami koła

Poniższe przykładowe konfiguracje definiują pakiet zawierający zadanie z wieloma *.whl plikami.

# job.yml
resources:
  jobs:
    example_job:
      name: 'Example with multiple wheels'
      tasks:
        - task_key: task

          spark_python_task:
            python_file: ../src/call_wheel.py

          libraries:
            - whl: ../my_custom_wheel1/dist/*.whl
            - whl: ../my_custom_wheel2/dist/*.whl

          new_cluster:
            node_type_id: i3.xlarge
            num_workers: 0
            spark_version: 14.3.x-scala2.12
            spark_conf:
              'spark.databricks.cluster.profile': 'singleNode'
              'spark.master': 'local[*, 4]'
            custom_tags:
              'ResourceClass': 'SingleNode'
# databricks.yml
bundle:
  name: job_with_multiple_wheels

include:
  - ./resources/job.yml

workspace:
  host: https://myworkspace.cloud.databricks.com

artifacts:
  my_custom_wheel1:
    type: whl
    build: poetry build
    path: ./my_custom_wheel1

  my_custom_wheel2:
    type: whl
    build: poetry build
    path: ./my_custom_wheel2

targets:
  dev:
    default: true
    mode: development

Zadanie z parametrami

Poniższa przykładowa konfiguracja definiuje zadanie z parametrami. Aby uzyskać więcej informacji na temat parametryzacji zadań, zobacz Sparametryzowanie zadań.

resources:
  jobs:
    job_with_parameters:
      name: job_with_parameters

      tasks:
        - task_key: task_a
          spark_python_task:
            python_file: ../src/file.py
            parameters:
              - '--param1={{ job.parameters.param1 }}'
              - '--param2={{ job.parameters.param2 }}'

          new_cluster:
            node_type_id: i3.xlarge
            num_workers: 1
            spark_version: 14.3.x-scala2.12

      parameters:
        - name: param1
          default: value1
        - name: param2
          default: value1

Te parametry można ustawić w czasie wykonywania, przekazując parametry zadania do bundle run, na przykład:

databricks bundle run -- --param1=value2 --param2=value2

Zadanie korzystające z pliku requirements.txt

Poniższa przykładowa konfiguracja definiuje zadanie, które używa pliku requirements.txt.

resources:
  jobs:
    job_with_requirements_txt:
      name: 'Example job that uses a requirements.txt file'
      tasks:
        - task_key: task
          job_cluster_key: default
          spark_python_task:
            python_file: ../src/main.py
          libraries:
            - requirements: /Workspace/${workspace.file_path}/requirements.txt

Zadanie zgodnie z harmonogramem

W poniższych przykładach przedstawiono konfigurację zadań uruchamianych zgodnie z harmonogramem. Aby uzyskać informacje o harmonogramach i wyzwalaczach zadań, zobacz Automatyzowanie zadań za pomocą harmonogramów i wyzwalaczy.

Ta konfiguracja definiuje zadanie, które jest uruchamiane codziennie o określonej godzinie:

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      schedule:
        quartz_cron_expression: '0 0 8 * * ?' # daily at 8am
        timezone_id: UTC
        pause_status: UNPAUSED

W tej konfiguracji zadanie jest uruchamiane tydzień po ostatnim uruchomieniu zadania:

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      trigger:
        pause_status: UNPAUSED
        periodic:
          interval: 1
          unit: WEEKS

Konfiguracja rurociągu

Ta sekcja zawiera przykłady konfiguracji potoku. Aby uzyskać informacje o konfiguracji potoku, zobacz potok.

Potok korzystający z obliczeń bezserwerowych

Pakiety zasobów usługi Databricks obsługują potoki, które są uruchamiane na bezserwerowym przetwarzaniu. Aby to skonfigurować, ustaw parametr serverless potoku na wartość true. Poniższa przykładowa konfiguracja definiuje potok uruchamiany na bezserwerowych obliczeniach z zainstalowanymi zależnościami oraz zadanie wyzwalające odświeżanie potoku co godzinę.

# A pipeline that runs on serverless compute
resources:
  pipelines:
    my_pipeline:
      name: my_pipeline
      target: ${bundle.environment}
      serverless: true
      environment:
        dependencies:
          - 'dist/*.whl'
      catalog: users
      libraries:
        - notebook:
            path: ../src/my_pipeline.ipynb

      configuration:
        bundle.sourcePath: /Workspace/${workspace.file_path}/src
# This defines a job to refresh a pipeline that is triggered every hour
resources:
  jobs:
    my_job:
      name: my_job

      # Run this job once an hour.
      trigger:
        periodic:
          interval: 1
          unit: HOURS

      email_notifications:
        on_failure:
          - someone@example.com

      tasks:
        - task_key: refresh_pipeline
          pipeline_task:
            pipeline_id: ${resources.pipelines.my_pipeline.id}