カスタムバンドルテンプレートを作成する
このチュートリアルでは、特定のDockerコンテナー イメージを使用してクラスター上でPythonタスクを使用してジョブを実行する宣言型オートメーション バンドルを作成するためのカスタム テンプレートを作成します。
カスタムバンドルテンプレートに関する情報については、「 カスタムバンドルテンプレート」を参照してください。
必要条件
- Databricks CLI バージョン 0.218.0 以降をインストールします。既にインストールしている場合は、コマンド ラインから
databricks -versionを実行して、バージョンが 0.218.0 以降であることを確認します。
ユーザープロンプト変数の定義
まず、 databricks bundle initユーザー プロンプト変数を定義します。コマンドラインから:
-
dab-container-templateという名前の空のフォルダーを作成します:shmkdir dab-container-template -
フォルダーのルートに、
databricks_template_schema.jsonという名前のファイルを作成します。shcd dab-container-template
touch databricks_template_schema.json -
バンドル プロジェクト名のユーザー プロンプトを定義するには、次の JSON を
databricks_template_schema.jsonファイルに追加します。JSON{
"properties": {
"project_name": {
"type": "string",
"default": "project_name",
"description": "Project name",
"order": 1
}
}
}
バンドルフォルダ構造を作成する
次に、生成されたバンドルのフォルダー構造を格納するtemplateフォルダーを作成します。サブディレクトリとファイルの名前は、Go パッケージ テンプレート構文に従います。
このテンプレートは、プロジェクト名プロンプトに基づいてバンドル プロジェクト フォルダーを作成します。
mkdir -p "template/{{.project_name}}"
次に、バンドル ファイル用のサブディレクトリresourcesとsrcを作成します。
mkdir -p "template/{{.project_name}}/resources"
mkdir -p "template/{{.project_name}}/src"
YAML 構成テンプレートを追加する
template/{{.project_name}}フォルダに、 databricks.yml.tmplという名前のファイルを作成します。
touch template/{{.project_name}}/databricks.yml.tmpl
次の YAML をdatabricks.yml.tmplに追加します。この例では、バンドル テンプレート ヘルパーを使用します。
# This is a 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 :re[LDP].
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 -}}
template/{{.project_name}}/resourcesフォルダーに{{.project_name}}_job.yml.tmplという名前の別の YAML ファイルを作成します。この新しい YAML ファイルにはジョブ定義が含まれています。
touch template/{{.project_name}}/resources/{{.project_name}}_job.yml.tmpl
特定の Docker コンテナ イメージを使用してジョブ クラスターで実行する Python タスクを含むテンプレート ジョブを記述するには、次の YAML をこのファイルに追加します。この例では、デフォルトの Databricks ベース Docker コンテナー イメージを使用していますが、代わりに独自のカスタム イメージを指定することもできます。
# 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/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
構成で参照されているファイルを追加する
次に、テンプレート内のジョブによって参照される Python タスク ファイルを作成します。
touch template/{{.project_name}}/src/task.py
次に、以下を追加しますtask.py
print(f'Spark version{spark.version}')
バンドル・テンプレートの構造の確認
バンドルテンプレートプロジェクトのフォルダ構造を確認します。次のようになります。
dab-container-template
├── databricks_template_schema.json
└── template
├── {{.project_name}}
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── task.py
テンプレートをテストする
最後に、バンドルテンプレートをテストします。新しいカスタムテンプレートに基づいてバンドルを生成するには、 databricks bundle init コマンドを使用して、新しいテンプレートの場所を指定します。バンドルプロジェクトのルートフォルダから:
databricks bundle init dab-container-template
次のステップ
- ノートブックをDatabricksワークスペースにデプロイするバンドルを作成し、ノートブックをDatabricksジョブとしてデプロイする実行を作成します。 宣言型自動化バンドルを使用してジョブを開発するを参照してください。
- ノートブックをDatabricksワークスペースにデプロイするバンドルを作成し、ノートブックをETLパイプラインとしてデプロイする実行を作成します。 宣言型自動化バンドルを使用したパイプラインの開発を参照してください。
- MLOpsスタックをデプロイして実行するバンドルを作成します。MLOpsスタック向けの宣言型自動化バンドルを参照してください。
- GitHub の CI/CD (継続的インテグレーション/継続的デプロイメント) ワークフローにバンドルを追加します。GitHub Actionsを参照してください。