Megosztás:


Csomagkonfigurációs példák

Ez a cikk példakonfigurációt biztosít a Databricks Asset Bundles funkcióihoz és a csomagok gyakori használati eseteihez.

Az alábbi táblázatban ismertetett teljes csomagpéldák elérhetők a csomagpéldák GitHub-adattárában:

Programcsomag neve Leírás
app_with_database Csomag egy OLTP Postgres-adatbázis által támogatott Databricks-alkalmazással
dashboard_nyc_taxi Egy AI/BI-irányítópultot tartalmazó csomag és egy feladat, amely rögzíti az irányítópult pillanatképét, és e-mailben küldi el az előfizetőnek
database_with_catalog OLTP-adatbázispéldányt és adatbáziskatalógust meghatározó csomag
databricks_app Databricks-alkalmazást definiáló csomag
fejlesztési_klaszter Fejlesztési (teljes célú) fürtöt definiáló és használó csomag
`job_read_secret` Egy csomag, amely egy titkos hatókört definiál, és egy olyan feladatot, amely belőle olvassa be az adatokat.
feladat_több_kerékkel Több kerékfüggőséggel rendelkező feladatot definiáló és használó csomag
feladat_mely_futtatási_lehetőségeket_tartalmaz Több feladatot és futtatási feladatokat tartalmazó csomag
feladat_sql_jegyzetfüzettel Sql Notebook-feladatot használó feladat csomagja
pipeline_with_schema Unity Catalog-sémát és azt használó folyamatot meghatározó csomag
private_wheel_packages Egy csomag, amely egy feladatból származó privát wheel csomagot használ
Python kerék költészet Egy csomag, amely a Poetry segítségével egy whl-t épít.
szerver nélküli feladat Egy csomag, amely kiszolgáló nélküli számítást használ egy feladat futtatásához
fájlok megosztása csomagok között A csomag gyökérkönyvtárán kívül található fájlokat tartalmazó csomag.
spark_jar_task Spark JAR-feladatot definiáló és használó csomag
írás_feladatból_kötetbe Egy csomag, amely egy fájlt egy Unity Catalog-kötetbe ír

Kötegforgatókönyvek

Ez a szakasz olyan konfigurációs példákat tartalmaz, amelyek bemutatják a legfelső szintű csomagleképezések használatát. Lásd : Konfigurációs referencia.

JAR-fájlt feltöltő csomag a Unity Catalogba

A Unity Catalog-köteteket összetevő-elérési útként is megadhatja, így minden összetevő, például JAR-fájlok és kerékfájlok feltöltődnek a Unity Catalog-kötetekre. Az alábbi példacsomag létrehoz és feltölt egy JAR-fájlt a Unity Catalogba. A leképezésről további információt a artifact_pathworkspace.artifact_path talál. A artifactsösszetevőkcímű témakörben talál további információt.

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

Irányítópult konfigurálása

Ez a szakasz irányítópult-konfigurációs példákat tartalmaz. Az irányítópult konfigurációjának részleteiért tekintse meg az irányítópultot.

Irányítópult-katalógus és sémaparaméterezés

Egyetlen katalógust és sémát határozhat meg az irányítópulton belüli adathalmazokhoz, amikor a Databricks-eszközcsomagokkal helyezi üzembe az dataset_catalogdataset_schema és -mezők használatával.

Megjegyzés:

Az SQL-ben található adott táblahivatkozások paraméterezéséhez használhatja a függvényt current_catalog() .

Az alábbi példacsomag-konfiguráció változókat határoz meg a katalógus és a séma értékeinek beállításához a dev és prod célpontokra. Feltételezi, hogy van egy fájl nyc_taxi_trip_analysis.lvdash.json a src csomag mappájában.

bundle:
  name: dashboard-bundle

variables:
  warehouse_id:
    description: Warehouse
    default: baf79a9e4ze90f02
  catalog_name:
    description: 'Catalog name'
    default: test_catalog
  schema_name:
    description: 'Schema name'
    default: ${workspace.current_user.short_name}

resources:
  dashboards:
    nyc_taxi_trip_analysis:
      display_name: 'NYC Taxi Trip Analysis'
      file_path: src/nyc_taxi_trip_analysis.lvdash.json
      warehouse_id: ${var.warehouse_id}
      dataset_catalog: ${var.catalog}
      dataset_schema: ${var.schema}

targets:
  dev:
    mode: development
    default: true
    workspace:
      host: https://myworkspace.cloud.databricks.com
    variables:
      catalog: dev_catalog
      schema: ${workspace.current_user.short_name}

  prod:
    mode: production
    workspace:
      host: https://myworkspace.cloud.databricks.com
      root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
    variables:
      catalog_name: prod_catalog
      schema_name: prod_schema
    permissions:
      - user_name: someone@example.com
        level: CAN_MANAGE

Feladatkonfiguráció

Ez a szakasz feladatkonfigurációs példákat tartalmaz. A feladat konfigurációjának részleteiért tekintse meg a feladatot.

Kiszolgáló nélküli számítást használó feladat

A Databricks-eszközcsomagok támogatják a kiszolgáló nélküli számításon futó feladatokat. Lásd : A Lakeflow-feladatok futtatása kiszolgáló nélküli számítással munkafolyamatokhoz. Ennek konfigurálásához kihagyhatja a jegyzetfüzet-feladattal rendelkező feladatok clusters beállítását, vagy megadhat egy környezetet az alábbi példákban látható módon. A Python-szkriptekhez, a Python-kerékhez és a dbt-feladatokhoz environment_key szükséges a kiszolgáló nélküli számításhoz. Lásd: 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

Feladat több kerékfájllal

Az alábbi példakonfigurációk egy több fájlt tartalmazó feladatot *.whl tartalmazó csomagot határoznak meg.

# 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

Feladat paraméterekkel

Az alábbi példakonfiguráció egy paraméterekkel rendelkező feladatot határoz meg. A feladatok paraméterezéséről további információt a Feladatok paraméterezése című témakörben talál.

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

Ezek a paraméterek futásidőben állíthatók be, ha feladatparamétereketbundle runadnak át, például:

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

Requirements.txt fájlt használó feladat

Az alábbi példakonfiguráció egy requirements.txt fájlt használó feladatot határoz meg.

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

Feladat ütemezés szerint

Az alábbi példák az ütemezés szerint futó feladatok konfigurációját mutatják be. A feladatütemezésekről és az eseményindítókról további információt Feladatok automatizálása ütemezésekkel és eseményindítókkalcímű témakörben talál.

Ez a konfiguráció meghatároz egy feladatot, amely naponta fut egy adott időpontban:

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

Ebben a konfigurációban a feladat a feladat utolsó futtatása után egy héttel fut:

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

Folyamatkonfiguráció

Ez a szakasz folyamatkonfigurációs példákat tartalmaz. A csővezeték-konfigurációval kapcsolatos információkért tekintse meg a csővezetéket.

Kiszolgáló nélküli számítást használó folyamat

A Databricks-eszközcsomagok támogatják a kiszolgáló nélküli számításon futó folyamatokat. Ennek konfigurálásához állítsa be a folyamat serverless értékét true-re. Az alábbi példakonfiguráció egy kiszolgáló nélküli számításon futó folyamatot határoz meg, amelyen telepítve vannak a függőségek, és egy feladat, amely óránként frissíti a folyamatot.

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