堆栈 CLI(旧版)

重要

本文档已过时,将来可能不会更新。

此信息适用于旧版 Databricks CLI 0.18 及更低版本。 Databricks 建议改用较新的 Databricks CLI 0.205 或更高版本。 请参阅什么是 Databricks CLI?。 若要查找你的 Databricks CLI 的版本,请运行 databricks -v

要从 Databricks CLI 版本 0.18 或更低版本迁移到 Databricks CLI 版本 0.205 或更高版本,请参阅 Databricks CLI 迁移

Databricks CLI 0.205 及更高版本不支持堆栈 CLI。 Databricks 建议改用 Databricks Terraform 提供程序

注意

堆栈 CLI 需要 Databricks CLI 0.8.3 或更高版本。

堆栈 CLI 提供一种管理 Azure Databricks 资源(例如作业、笔记本和 DBFS 文件)堆栈的方法。 可以在本地存储笔记本和 DBFS 文件,并创建一个堆栈配置 JSON 模板,用于定义从本地文件到 Azure Databricks 工作区路径的映射,以及运行笔记本的作业的配置。

结合使用堆栈 CLI 和堆栈配置 JSON 模板来部署和管理堆栈。

可以通过将 Databricks 堆栈 CLI 子命令附加到 databricks stack 来运行它们。

databricks stack --help
Usage: databricks stack [OPTIONS] COMMAND [ARGS]...

  [Beta] Utility to deploy and download Databricks resource stacks.

Options:
  -v, --version   [VERSION]
  --debug         Debug Mode. Shows full stack trace on error.
  --profile TEXT  CLI connection profile to use. The default profile is
                  "DEFAULT".
  -h, --help      Show this message and exit.

Commands:
  deploy    Deploy a stack of resources given a JSON configuration of the stack
    Usage: databricks stack deploy [OPTIONS] CONFIG_PATH
    Options:
       -o, --overwrite  Include to overwrite existing workspace notebooks and DBFS
                        files  [default: False]
  download  Download workspace notebooks of a stack to the local filesystem
            given a JSON stack configuration template.
    Usage: databricks stack download [OPTIONS] CONFIG_PATH
    Options:
       -o, --overwrite  Include to overwrite existing workspace notebooks in the
                        local filesystem   [default: False]

将堆栈部署到工作区

此子命令部署堆栈。 请参阅堆栈设置,了解如何设置堆栈。

databricks stack deploy ./config.json

堆栈配置 JSON 模板提供 config.json 的示例。

下载堆栈笔记本更改

此子命令下载堆栈的笔记本。

databricks stack download ./config.json

示例

堆栈设置

示例堆栈的文件结构

tree
.
├── notebooks
|   ├── common
|   |   └── notebook.scala
|   └── config
|       ├── environment.scala
|       └── setup.sql
├── lib
|   └── library.jar
└── config.json

此示例堆栈在 notebooks/common/notebook.scala 中包含一个主笔记本,在 notebooks/config 文件夹中包含配置笔记本。 lib/library.jar 中有堆栈的 JAR 库依赖项。 config.json 是堆栈的堆栈配置 JSON 模板。 这就是传递给堆栈 CLI 的用于部署堆栈的内容。

堆栈配置 JSON 模板

堆栈配置模板描述堆栈配置。

cat config.json
{
  "name": "example-stack",
  "resources": [
  {
    "id": "example-workspace-notebook",
    "service": "workspace",
    "properties": {
      "source_path": "notebooks/common/notebook.scala",
      "path": "/Users/example@example.com/dev/notebook",
      "object_type": "NOTEBOOK"
    }
  },
  {
    "id": "example-workspace-config-dir",
    "service": "workspace",
    "properties": {
      "source_path": "notebooks/config",
      "path": "/Users/example@example.com/dev/config",
      "object_type": "DIRECTORY"
    }
  },
  {
    "id": "example-dbfs-library",
    "service": "dbfs",
    "properties": {
      "source_path": "lib/library.jar",
      "path": "dbfs:/tmp/lib/library.jar",
      "is_dir": false
    }
  },
    {
      "id": "example-job",
      "service": "jobs",
      "properties": {
        "name": "Example Stack CLI Job",
        "new_cluster": {
          "spark_version": "7.3.x-scala2.12",
          "node_type_id": "Standard_DS3_v2",
          "num_workers": 3
        },
        "timeout_seconds": 7200,
        "max_retries": 1,
        "notebook_task": {
          "notebook_path": "/Users/example@example.com/dev/notebook"
        },
        "libraries": [
          {
            "jar": "dbfs:/tmp/lib/library.jar"
          }
        ]
      }
    }
  ]
}

每个作业、工作区笔记本、工作区目录、DBFS 文件或 DBFS 目录都定义为 ResourceConfig。 代表工作区或 DBFS 资产的每个 ResourceConfig 都包含一个从本地文件或目录 (source_path) 到其在工作区中或 DBFS 中的位置 (path) 的映射。

堆栈配置模板架构概述了堆栈配置模板的架构。

部署堆栈

使用 databricks stack deploy <configuration-file> 命令部署堆栈。

databricks stack deploy ./config.json

在堆栈部署过程中,会将 DBFS 和工作区资产上传到 Azure Databricks 工作区,并创建作业。

在堆栈部署时,用于部署的 StackStatus JSON 文件与名称相同的堆栈配置模板保存在同一目录中,并在 .json 扩展名前添加 deployed:(例如 ./config.deployed.json)。 堆栈 CLI 使用此文件来跟踪工作区上以前部署的资源。

堆栈状态架构概述了堆栈配置的架构。

重要

不要尝试编辑或移动堆栈状态文件。 如果收到有关堆栈状态文件的任何错误,请删除该文件,然后尝试重新部署。

./config.deployed.json
{
  "cli_version": "0.8.3",
  "deployed_output": [
    {
      "id": "example-workspace-notebook",
      "databricks_id": {
        "path": "/Users/example@example.com/dev/notebook"
      },
      "service": "workspace"
    },
    {
      "id": "example-workspace-config-dir",
      "databricks_id": {
        "path": "/Users/example@example.com/dev/config"
      },
      "service": "workspace"
    },
    {
      "id": "example-dbfs-library",
      "databricks_id": {
        "path": "dbfs:/tmp/lib/library.jar"
      },
      "service": "dbfs"
    },
    {
      "id": "example-job",
      "databricks_id": {
        "job_id": 123456
      },
      "service": "jobs"
    }
  ],
  "name": "example-stack"
}

数据结构

本节内容:

堆栈配置模板架构

StackConfig

这些是堆栈配置模板的外围字段。 所有字段都是必填字段。

字段名称 类型 说明
name STRING 堆栈的名称。
resources ResourceConfig 列表 Azure Databricks 中的资产。 资源与三个服务(REST API 命名空间)相关:工作区、作业和 dbfs。

ResourceConfig

每个 ResourceConfig 的字段。 所有字段都是必填字段。

字段名称 类型 描述
id STRING 资源的唯一 ID。 强制执行 ResourceConfig 的唯一性。
服务 ResourceService 资源运行时所在的 REST API 服务。 jobs
workspacedbfs 中的一项。
properties ResourceProperties 其中的字段根据 ResourceConfig 服务而异。

ResourceProperties

ResourceService 提供的资源属性。 这些字段被分类为 Azure Databricks REST API 中已使用或未使用的字段。 列出的所有字段都是必需的。

服务 堆栈 CLI 中使用的 REST API 中的字段 仅在堆栈 CLI 中使用的字段
工作区 path:STRING- 笔记本或目录的远程工作区路径。 (例如:/Users/example@example.com/notebook

object_type:工作区 API- 笔记本对象类型。 只能是 NOTEBOOKDIRECTORY
source_path:STRING- 工作区笔记本或目录的本地源路径。 堆栈配置模板文件的相对路径或文件系统中的绝对路径。
jobs settings 或 new_settings 结构中的任何字段。 settings 或 new_settings 结构 中不需要但堆栈 CLI 需要的唯一字段是:

name:STRING- 要部署的作业的名称。 为了不创建太多重复的作业,堆栈 CLI 在堆栈部署的作业中强制执行唯一名称。
无。
dbfs path:STRING- 匹配的远程 DBFS 路径。 必须以 dbfs:/ 开头。 (例如:dbfs:/this/is/a/sample/path

is_dir:BOOL- DBFS 路径是目录还是文件。
source_path:STRING- DBFS 文件或目录的本地源路径。 堆栈配置模板文件的相对路径或文件系统中的绝对路径。

ResourceService

每个资源都属于与 Databricks REST API 相关的特定服务。 这些是堆栈 CLI 支持的服务。

服务 说明
工作区 工作区笔记本或目录。
jobs Azure Databricks 作业。
dbfs DBFS 文件或目录。

堆栈状态架构

StackStatus

堆栈状态文件是在使用 CLI 部署堆栈之后创建的。 顶级字段包括:

字段名称 类型 说明
name STRING 堆栈的名称。 此字段与 StackConfig 中的字段相同。
cli_version STRING 用于部署堆栈的 Databricks CLI 的版本。
deployed_resources ResourceStatus 列表 每个已部署资源的状态。 对于在 StackConfig 中定义的每个资源,此处都将生成相应的 ResourceStatus

ResourceStatus

字段名称 类型 描述
id STRING 资源的堆栈唯一 ID。
服务 ResourceService 资源运行时所在的 REST API 服务。 jobs
workspacedbfs 中的一项。
databricks_id DatabricksId 已部署资源的物理 ID。 实际架构取决于资源的类型(服务)。

DatabricksId

一个 JSON 对象,其字段取决于服务。

服务 JSON 中的字段 类型 说明
工作区 path STRING Azure Databricks 工作区中笔记本或目录的绝对路径。 命名与工作区 API 一致。
jobs job_id STRING 作业 ID,如 Azure Databricks 工作区中所示。 可用于更新已部署的作业。
dbfs path STRING Azure Databricks 工作区中笔记本或目录的绝对路径。 命名与 DBFS API 一致。