Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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}