Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule przedstawiono przykładową konfigurację pakietów deklaratywnych automatyzacji (wcześniej znanych jako pakiety zasobów usługi Databricks) i typowe przypadki 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 na temat mapowania artifact_path, odwołaj się do workspace.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 pulpitu nawigacyjnego
Ta sekcja zawiera przykłady konfiguracji pulpitu nawigacyjnego. Aby uzyskać szczegółowe informacje o konfiguracji pulpitu nawigacyjnego, zobacz pulpit nawigacyjny.
Katalog pulpitu nawigacyjnego i parametryzacja schematu
Podczas wdrażania pulpitu nawigacyjnego za pomocą pakietów Deklaratywnej Automatyzacji można zdefiniować pojedynczy katalog i schemat dla zestawów danych, korzystając z pól dataset_catalog i dataset_schemazasobu pulpitu nawigacyjnego.
Uwaga / Notatka
Aby sparametryzować odwołania do określonej tabeli wewnątrz bazy danych SQL, możesz użyć current_catalog() funkcji .
Poniższa przykładowa konfiguracja pakietu definiuje zmienne do ustawiania wartości katalogu i schematu dla celów dev i prod. Przyjęto założenie, że w nyc_taxi_trip_analysis.lvdash.json folderze pakietu znajduje się pliksrc.
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
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 deklaratywne automatyzacji obsługują zadania uruchamiane w 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 wheel
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 deklaratywne automatyzacji obsługują potoki uruchamiane w bezserwerowych obliczeniach. 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}