教學課程:建立您的第一個自訂 Databricks Asset Bundle 範本
在本教學課程中,您將建立自訂 Databricks Asset Bundle 範本,以使用特定 Docker 容器映像在叢集上建立具有特定 Python 工作的套件組合。
在您開始使用 Intune 之前
安裝 Databricks CLI 0.218.0 版或更新版本。 如果您已安裝,請從命令列執行 databricks -version
,確認版本為 0.218.0 或更高版本。
定義使用者提示變數
建立套件組合範本的第一步是定義 databricks bundle init
使用者提示變數。 從命令列:
建立名為
dab-container-template
的空目錄:mkdir dab-container-template
在目錄的根目錄中,建立一個名為
databricks_template_schema.json
的檔案:cd dab-container-template touch databricks_template_schema.json
將下列內容新增至
databricks_template_schema.json
並儲存檔案。 每個變數都會在套件組合建立期間,轉譯為使用者提示。{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
建立套件組合資料夾結構
接下來,在範本目錄中,建立名為 resources
和 src
的子目錄。 template
資料夾包含所產生套件組合的目錄結構。 從使用者值衍生時,子目錄和檔案的名稱將會遵循 Go 套件範本語法。
mkdir -p "template/resources"
mkdir -p "template/src"
新增 YAML 組態範本
在 template
目錄中建立名為 databricks.yml.tmpl
的檔案,並新增下列 YAML:
touch template/databricks.yml.tmpl
# This is a Databricks asset bundle definition for {{.project_name}}.
# See https://docs.databricks.com/dev-tools/bundles/index.html for documentation.
bundle:
name: {{.project_name}}
include:
- resources/*.yml
targets:
# The 'dev' target, used for development purposes.
# Whenever a developer deploys using 'dev', they get their own copy.
dev:
# We use 'mode: development' to make sure everything deployed to this target gets a prefix
# like '[dev my_user_name]'. Setting this mode also disables any schedules and
# automatic triggers for jobs and enables the 'development' mode for Delta Live Tables pipelines.
mode: development
default: true
workspace:
host: {{workspace_host}}
# The 'prod' target, used for production deployment.
prod:
# For production deployments, we only have a single copy, so we override the
# workspace.root_path default of
# /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.target}/${bundle.name}
# to a path that is not specific to the current user.
#
# By making use of 'mode: production' we enable strict checks
# to make sure we have correctly configured this target.
mode: production
workspace:
host: {{workspace_host}}
root_path: /Shared/.bundle/prod/${bundle.name}
{{- if not is_service_principal}}
run_as:
# This runs as {{user_name}} in production. Alternatively,
# a service principal could be used here using service_principal_name
# (see Databricks documentation).
user_name: {{user_name}}
{{end -}}
建立名為 {{.project_name}}_job.yml.tmpl
的另一個 YAML 檔案,並將其放在 template/resources
目錄中。 這個新的 YAML 檔案會將專案工作定義從套件組合定義的其餘部分分割。 將下列 YAML 新增至此檔案,以描述範本作業,其中包含使用特定 Docker 容器映射在工作叢集上執行的特定 Python 任務:
touch template/resources/{{.project_name}}_job.yml.tmpl
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: python_task
job_cluster_key: job_cluster
spark_python_task:
python_file: ../src/{{.project_name}}/task.py
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
docker_image:
url: databricksruntime/python:10.4-LTS
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
在此範例中,您會使用預設的 Databricks 基底 Docker 容器映像,但可以改為指定自己的自訂映像。
新增組態中參考的檔案
接下來,建立 template/src/{{.project_name}}
目錄,並在範本中建立工作所參考的 Python 任務檔案:
mkdir -p template/src/{{.project_name}}
touch template/src/{{.project_name}}/task.py
現在將下列內容新增至 task.py
:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()
print(f'Spark version{spark.version}')
確認套件組合範本結構
檢閱套件組合範本專案的資料夾結構。 其看起來應該如下:
.
├── databricks_template_schema.json
└── template
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── {{.project_name}}
└── task.py
測試您的範本
最後,測試您的套件組合範本。 若要根據新的自訂範本產生套件組合,請使用 databricks bundle init
命令,並指定新的範本位置。 從您的套件組合專案根資料夾:
mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template
下一步
- 建立將筆記本部署至 Azure Databricks 工作區的套件組合,然後執行將 Notebook 部署為 Azure Databricks 工作。 請參閱使用 Databricks Asset Bundles 在 Azure Databricks 上開發作業。
- 建立將筆記本部署至 Azure Databricks 工作區的套件組合,然後執行將筆記本部署為 Delta Live Tables 管線。 請參閱 使用 Databricks Asset Bundles 開發 Delta Live Tables 管線。
- 建立可部署和執行 MLOps Stack 的套件組合。 請參閱 適用於 MLOps Stack 的 Databricks Asset Bundles 。
- 在 GitHub 中將套件組合新增至 CI/CD (持續整合/持續部署) 工作流程。 請參閱 使用 Databricks Asset Bundles 和 GitHub Actions 執行 CI/CD 工作流程。