Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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}