共用方式為


教學課程:建立您的第一個自訂 Databricks Asset Bundle 範本

在本教學課程中,您將建立自訂 Databricks Asset Bundle 範本,以使用特定 Docker 容器映像在叢集上建立具有特定 Python 工作的套件組合。

在您開始使用 Intune 之前

安裝 Databricks CLI 0.218.0 版或更新版本。 如果您已安裝,請從命令列執行 databricks -version,確認版本為 0.218.0 或更高版本。

定義使用者提示變數

建立套件組合範本的第一步是定義 databricks bundle init 使用者提示變數。 從命令列:

  1. 建立名為 dab-container-template 的空目錄:

    mkdir dab-container-template
    
  2. 在目錄的根目錄中,建立一個名為 databricks_template_schema.json 的檔案:

    cd dab-container-template
    touch databricks_template_schema.json
    
  3. 將下列內容新增至 databricks_template_schema.json 並儲存檔案。 每個變數都會在套件組合建立期間,轉譯為使用者提示。

    {
      "properties": {
        "project_name": {
          "type": "string",
          "default": "project_name",
          "description": "Project name",
          "order": 1
        }
      }
    }
    

建立套件組合資料夾結構

接下來,在範本目錄中,建立名為 resourcessrc 的子目錄。 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

下一步

資源