使用 dbx 实时同步本地文件与远程工作区

重要

本文档已停用,可能不会更新。

Databricks 建议使用 Databricks CLI 0.205 或更高版本,而不是 dbx sync,因为这些版本通过 databricks sync 命令提供了类似于 dbx sync 的功能。

适用于 Visual Studio Code 的 Databricks 扩展 还包括与集成到 Visual Studio Code IDE 中的 dbx sync 类似的功能。 请注意,dbx sync 可以将文件更改从本地开发计算机同步到 Azure Databricks 工作区中的 DBFS、工作区位置以及 Databricks Git 文件夹。 Visual Studio Code 的 Databricks 扩展仅支持将文件更改同步到工作区用户(/Users)文件和 Databricks Git 文件夹(/Repos)。

注意

本文介绍 Databricks Labs 的 dbx,它按原样提供,并且 Databricks 不会通过客户技术支持渠道为它提供支持。 问题与功能请求可以通过 GitHub 上的 databrickslabs/dbx 存储库的 问题 页进行通信。

可以使用由 Databricks Labs 提供的 dbx,将本地开发计算机上文件的更改实时同步到 Azure Databricks 工作区中的对应文件。 这些工作区文件可以位于 DBFSDatabricks Git 文件夹中

dbx(也称为 dbx sync)的实时文件同步在快速代码开发方案中非常有用。 例如,可以将本地集成开发环境(IDE)用于提高生产力的功能,例如语法高亮、智能代码补全、代码规范检查以及测试和调试。 然后,可以立即转到工作区并运行更新的代码。

可以单独使用 dbx sync,或者将 与自动化作业一起使用,或将 与 IDE一起使用。

dbx sync 开发工作流

有两种用于 dbx sync的开发流程,一种使用 DBFS,另一种使用 Databricks Git 目录。

使用 dbx sync 和 DBFS 的典型开发工作流是:

  1. 标识包含要同步到 DBFS 的文件的本地目录。
  2. 确定要与本地目录同步的 DBFS 中的路径(或让 dbx sync 为你创建默认 DBFS 路径)。
  3. 运行 dbx sync dbfs,将本地目录同步到 DBFS 路径。 dbx sync 开始监视本地目录是否有任何文件更改。
  4. 根据需要更改本地目录中的文件。 dbx sync 实时将这些更改应用于 DBFS 路径中的相应文件。

使用 dbx sync 和 Databricks Git 文件夹的典型开发工作流是:

  1. 如果还没有可用的存储库,请使用 Databricks Git 文件夹支持的 Git 提供程序创建一个存储库。
  2. 将存储库克隆到 Azure Databricks 工作区。
  3. 将存储库克隆到本地开发计算机。
  4. 运行 dbx sync repo,将本地克隆的存储库与工作区克隆的存储库相关联。 dbx sync 开始监视本地目录是否有任何文件更改。
  5. 根据需要更改本地克隆存储库中的文件。 dbx sync 将这些更改实时应用于 Databricks Git 文件夹中的相应文件。
  6. 定期将工作区中克隆的存储库中的更新文件推送到 Git 提供程序,使存储库与 Git 提供程序保持最新。

重要

dbx sync 仅执行从本地开发计算机到远程工作区的文件更改的单向实时同步。 因此,Databricks 不建议在 Azure Databricks 工作区中启动对由 dbx sync监视的文件的更改。 如果必须进行此类工作区启动的文件更改,则还必须执行以下操作:

  • 对于 DBFS 中的文件更改,请手动对本地文件进行相应的更改。
  • 对于 Databricks Git 文件夹中的文件更改,请将文件更改从工作区推送到 Git 提供程序。 然后,在本地开发计算机上,从 Git 提供程序中拉取这些文件更改。

要求

如果要对 Databricks Git 文件夹使用 dbx sync,Azure Databricks 工作区必须满足以下要求:

  • 建议使用 Git 提供程序克隆存储库,但这不是必需的。

在本地开发计算机上,必须安装以下各项:

  • Python 版本 3.8 或更高版本。 若要检查 Python 是否已安装,以及检查已安装的 Python 版本,请在终端或 PowerShell 中运行 python --version

    python --version
    

    注意

    某些 python 的安装可能需要使用 python3 来替代 python。 如果是,请将 python 替换为本文中的 python3

  • pip。 若要检查是否已安装 pip,以及检查已安装 pip 版本,请运行 pip --version 还是 python -m pip --version

    pip --version
    
    # Or...
    
    python -m pip --version
    

    注意

    pip 的某些安装可能要求使用 pip3 而不是 pip。 如果是,请将 pip 替换为本文中的 pip3

  • dbx 版本 0.8.0 或更高版本。 若要检查是否已安装 dbx,并检查已安装 dbx 版本,请运行 dbx --version。 若要从 Python 包索引(PyPI)安装 dbx,请运行 pip install dbxpython -m pip install dbx。 (dbx 包括 dbx sync。)

    # Check whether dbx is installed, and check its version.
    dbx --version
    
    # Install dbx.
    pip install dbx
    
    # Or...
    python -m pip install dbx
    

    注意

    有关 的详细信息,请参阅 Databricks Labs dbx 和 dbx 文档

  • 设置了身份验证Databricks CLI 0.18 或更低版本。 安装 dbx时,会自动安装旧版 Databricks CLI(Databricks CLI 版本 0.17)。 可以在以下一个或两个位置的本地开发计算机上设置此身份验证:

    • DATABRICKS_HOSTDATABRICKS_TOKEN 环境变量中(从旧版 Databricks CLI 版本 0.8.0 开始)。
    • .databrickscfg 文件的 Azure Databricks 配置文件中。

    dbx 分别在这两个位置查找身份验证凭据。 dbx 仅使用它找到的第一组匹配凭据。

    注意

    如果使用 .databrickscfg 文件,则在默认情况下,dbx sync 会在此文件中查找名为 DEFAULT 的配置文件。 要指定其他配置文件,请在运行 dbx sync 命令时使用 --profile 选项,本文稍后将对此进行介绍。

    dbx 不支持使用 .netrc 文件进行身份验证。

  • 如果想将 dbx sync 与 Databricks Git 文件夹结合使用,建议使用 Git 提供程序对存储库进行本地克隆(但这不是必需的)。 若要执行本地克隆,请参阅 Git 提供程序的文档。

将 DBFS 与 dbx sync 配合使用

  1. 从本地开发计算机上的终端或 PowerShell 切换到包含要同步到 Azure Databricks 工作区中的 DBFS 的文件的目录。

  2. 运行 dbx sync 命令,将本地目录同步到工作区中的 DBFS,如下所示。 (不要忘记末尾的点(.),表示当前目录。

    dbx sync dbfs --source .
    

    提示

    若要指定不同的源目录,请将点(.)替换为其他路径。

    注意

    如果出现错误 Error: No such command 'sync',则安装 dbx 可能已过期。 若要解决此问题,请运行 pip install --upgrade dbx==<version>python -m pip install --upgrade dbx==version,其中 <version> 是最新版本的 dbx。 可以在 dbx的 PyPI 网页中找到此版本号。

    pip install --upgrade dbx==<version>
    
    # Or...
    python -m pip install --upgrade dbx==version
    
  3. dbx sync 开始将当前本地目录中的文件与工作区中以下 DBFS 路径中的文件同步。 dbx sync 通过打印 Target base path 后跟 DBFS 路径来确认这一点,例如:

    /tmp/users/<your-Databricks-username>/<local-directory-name>
    

    提示

    若要指定其他用户名或 DBFS 路径,请在运行 dbx sync时分别指定 --user--dest 选项。

  4. 根据需要更改本地文件。

    重要

    必须让终端或 PowerShell 保持打开状态,才能使 dbx sync 继续同步。 如果关闭终端或 PowerShell,dbx sync 停止监视文件更改并停止同步。 若要恢复文件更改同步,请从头重复此过程。

  5. 根据需要,在工作区中验证在 DBFS 中的上述路径中的文件更改。

将 Databricks Git 文件夹与 dbx sync 配合使用

  1. 在本地开发计算机的终端或 PowerShell 中,切换到包含 Git 提供商存储库克隆的根目录。

  2. 在 Azure Databricks 工作区中,标识要将本地克隆存储库同步到的 Databricks Git 文件夹的名称。 可以通过单击工作区边栏中 Git 文件夹来查找此存储库名称。

  3. 在本地开发计算机上,运行 dbx sync 命令,将本地克隆的存储库同步到工作区中的 Databricks Git 文件夹,如下所示,将 <your-repo-name> 替换为 Databricks Git 文件夹中存储库的名称。 (不要忘记末尾的点(.),表示当前目录。

    dbx sync repo -d <your-repo-name> --source .
    

    提示

    若要指定不同的源目录,请将点(.)替换为其他路径。

    注意

    如果出现错误 Error: No such command 'sync',则安装 dbx 可能已过期。 若要解决此问题,请运行 pip install --upgrade dbx==<version>python -m pip install --upgrade dbx==version,其中 <version> 是最新版本的 dbx。 可以在 dbx的 PyPI 网页中找到此版本号。

    pip install --upgrade dbx==<version>
    
    # Or...
    python -m pip install --upgrade dbx==version
    
  4. dbx sync 开始将本地克隆存储库中的文件与工作区中的 Databricks Git 文件夹中的文件同步。 dbx sync 通过打印 Target base path 后跟 Databricks Git 文件夹路径来确认这一点,例如:

    /Repos/<your-Databricks-username>/<your-repo-name>
    

    提示

    若要指定其他用户名或存储库名称,请在运行 dbx sync时分别指定 --user--dest-repo 选项。

  5. 根据需要更改本地文件。

    重要

    必须保持终端或 PowerShell 处于打开状态,以便 dbx sync 继续同步。 如果关闭终端或 PowerShell,dbx sync 停止监视文件更改并停止同步。 若要恢复文件更改同步,请从头重复此过程。

  6. 根据需要,验证工作区中 Databricks Git 文件夹中的文件更改。

其他资源