Databricks Git 文件夹限制和参考

以下部分指定 Databricks Git 文件夹和 Git 集成的限制。 有关常规信息,请参阅 资源限制

跳转到:

若要了解 Git 文件夹中支持的 Databricks 资产类型,请参阅 Git 文件夹支持哪些资产类型?

文件和存储库限制

Azure Databricks 不会对存储库大小强制实施限制。 但是:

  • 工作分支限制为 1 GB。
  • 无法在 Azure Databricks UI 中查看大于 10 MB 的文件。
  • 单个工作区文件具有单独的大小限制。 请参阅限制
  • 删除远程分支后,本地分支最多可以保留在关联的 Git 文件夹中 30 天。 若要完全删除本地分支,请删除存储库。

Databricks 建议将工作区资产和文件的总数保持在 20,000 以下。

每个 Git操作的限制是内存方面为 2 GB,磁盘写入方面为 4 GB。 由于每个作都应用限制,因此克隆 5 GB 存储库失败,但克隆 3 GB 存储库,以后再添加 2 GB 会成功。

如果存储库超出这些限制,则在克隆过程中可能会收到错误或超时,但操作可能仍在后台完成。

若要处理大型存储库,请尝试 稀疏签出Git CLI 命令

若要编写群集关闭后不保留的临时文件,请使用 $TEMPDIR。 这可以避免超过分支大小限制,并且比写入工作区文件系统中的工作目录(CWD)提供更好的性能。 请参阅在 Azure Databricks 上应将临时文件写入的位置

恢复已删除的文件

文件可恢复性因作而异。 某些操作允许通过 回收站 文件夹进行恢复,而其他操作则不允许。 以前提交并推送到远程分支的文件可以使用远程存储库的 Git 提交历史记录进行还原:

操作 文件是否可恢复?
使用工作区浏览器删除文件 是,来自回收站文件夹
放弃包含 Git 文件夹对话框的新文件 是,来自回收站文件夹
放弃包含 Git 文件夹对话框的修改文件 否,文件已消失
reset(硬)用于未提交的文件修改 否,文件修改已消失
reset(硬)用于未提交的新创建的文件 否,文件修改已消失
使用 Git 文件夹对话框切换分支 是,来自远程 Git 存储库
Git 文件夹对话框中的其他 Git 操作,例如提交或推送 是,来自远程 Git 存储库
从 Repos API 更新 PATCH/repos/id 操作 是,来自远程 Git 存储库

单存储库支持

Databricks 不建议创建由 monorepos 支持的 Git 文件夹,这些是大型的单组织 Git 存储库,包含多个项目中的数千个文件。

配置

本部分介绍 Git 文件夹存储、服务器支持和常规设置问题。

存储库内容存储

Azure Databricks 暂时将存储库内容克隆到控制平面中的磁盘。 控制平面的数据库存储笔记本文件,与主工作区中的文件类似。 非笔记本文件最多在磁盘上存储 30 天。

本地和自承载 Git 服务器

Databricks Git 文件夹支持 GitHub Enterprise、Bitbucket 服务器、Azure DevOps Server 和 GitLab 自管理(如果服务器可访问 Internet)。 有关本地集成,请参阅 Git 文件夹的 Git 代理服务器

若要与无法访问 Internet 的 Bitbucket 服务器、GitHub Enterprise Server 或 GitLab 自托管实例集成,请联系 Azure Databricks 帐户团队。

支持的资产类型

有关支持的项目类型的详细信息,请参阅 Git 文件夹支持哪些资产类型?

Git 文件夹是否支持 .gitignore 文件?

是的。 若要防止 Git 跟踪文件,请将文件名(包括扩展名)添加到 .gitignore 文件中。 创建一个文件或使用从远程存储库克隆的现有文件。

.gitignore 仅适用于未跟踪的文件。 添加已跟踪的文件 .gitignore 不会阻止 Git 跟踪它。

Git 子模块支持

标准 Git 文件夹不支持 Git 子模块,但具有 Git CLI 访问权限的 Git 文件夹可以使用它们。 请参阅“使用 Git CLI”命令(Beta 版)。

Azure 数据工厂 (ADF) 是否支持 Git 文件夹?

是的。

源管理

本部分介绍分支、合并以及 Git 文件夹如何处理笔记本和依赖项。

笔记本仪表板和分支更改

Azure Databricks 源格式笔记本不存储仪表板信息。

若要保留仪表板,请将笔记本格式更改为 .ipynb (Jupyter 格式),该格式默认支持仪表板和可视化定义。 若要保留可视化数据,请提交包含输出的笔记本。

请参阅 管理 IPYNB 笔记本输出提交

Git 文件夹是否支持分支合并?

是的。 也可以创建拉取请求并通过 Git 提供程序进行合并。

删除分支

若要删除分支,必须在 Git 提供程序中工作。

Python 依赖项优先级

Git 文件夹中的 Python 库优先于存储在其他位置的库。 例如,如果在 Databricks 计算上安装库,并且 Git 文件夹中存在同名的库,则会导入 Git 文件夹库。 请参阅 Python 库优先级

安全性、身份验证和令牌

本部分介绍 Git 提供程序的加密、令牌存储和身份验证问题。

Microsoft Entra ID 的条件访问策略 (CAP) 出现问题

克隆存储库时,可能会收到“拒绝访问”错误(如果:

  • Azure Databricks 工作区将 Azure DevOps 与 Microsoft Entra ID 身份验证配合使用。
  • 已在 Azure DevOps 中启用条件访问策略,并启用了 Microsoft Entra ID 条件访问策略。

若要解决此问题,请将排除项添加到 Azure Databricks IP 地址或用户的条件访问策略(CAP)。

有关详细信息,请参阅条件访问策略

包含 Microsoft Entra ID 令牌的允许列表

如果使用 Microsoft Entra ID 通过 Azure DevOps 进行身份验证,则默认允许列表将 Git URL 限制为:

  • dev.azure.com
  • visualstudio.com

有关详细信息,请参阅允许列表限制使用远程存储库

Git 文件夹加密

Azure Databricks 使用默认密钥加密 Git 文件夹内容。 仅支持客户管理的密钥来加密 Git 凭据。

GitHub 令牌存储和访问

  • Azure Databricks 控制平面存储身份验证令牌。 员工只能通过审核的临时凭据访问它们。
  • Azure Databricks 记录令牌的创建和删除,但不记录使用情况。 通过 Git 操作日志记录,您可以审核 Azure Databricks 应用程序中的令牌使用情况。
  • GitHub Enterprise 审核令牌使用情况。 其他 Git 服务也可能提供服务器审核。

Git 目录是否支持提交 GPG 签名功能?

否。

Git 文件夹是否支持 SSH?

否。 Git 文件夹仅支持 HTTPS。

Azure DevOps 跨租户错误

在单独的租户中连接到 DevOps 时,你可能会看到 Unable to parse credentials from Azure Active Directory account。 如果 Azure DevOps 项目与 Azure Databricks 位于不同的 Microsoft Entra ID 租户中,请使用 Azure DevOps 访问令牌。 请参阅使用令牌连接到 Azure DevOps 存储库

CI/CD 和 MLOps

本节介绍 Git 操作如何影响笔记本状态、MLflow 试验和作业执行。

传入更改清除笔记本状态

更改笔记本源代码的 Git 操作会导致笔记本状态丢失,包括单元格输出、注释、版本历史记录和小组件。 例如, git pull 可以更改笔记本源代码,要求 Databricks Git 文件夹覆盖现有笔记本。 操作(例如 git commitpush 或创建新分支)不会影响源代码,同时保留笔记本状态。

重要

MLflow 试验不适用于 Databricks Runtime 14.x 或更低版本的 Git 文件夹中。

Git 文件夹中的 MLflow 试验

有两种类型的 MLflow 试验:工作区和笔记本。 请参阅使用 MLflow 试验组织训练运行

  • 工作区试验:无法在 Git 文件夹中创建工作区 MLflow 试验。 将 MLflow 运行记录到常规工作区文件夹中创建的实验中。 对于多用户协作,请使用共享工作区文件夹。

  • 笔记本试验:可以在 Databricks Git 文件夹中创建笔记本试验。 如果将笔记本作为 .ipynb 文件签入源代码管理,MLflow 会将运行日志记录到自动创建的实验中。 源代码控制不会检查试验或其运行。 请参阅创建笔记本试验

防止 MLflow 试验中的数据丢失

使用 Lakeflow 作业创建的笔记本 MLflow 试验和远程存储库中的源代码 存储在临时存储中。 这些实验在工作流执行后会继续保留,但在计划清理期间有被删除的风险。 Databricks 建议将工作区 MLflow 试验与作业和远程 Git 源一起使用。

警告

切换到不包含笔记本的分支可能会丢失关联的 MLflow 试验数据。 如果在 30 天内未访问以前的分支,此损失将成为永久性损失。

若要在 30 天到期前恢复缺失的试验数据,请还原原始笔记本名称,打开笔记本,然后单击右窗格中的 “试验”图标 。 这会触发 mlflow.get_experiment_by_name() 并恢复试验并运行。 30 天后,Azure Databricks 会清除孤立的 MLflow 试验,以符合 GDPR 要求。

若要防止数据丢失,请避免重命名存储库中的笔记本。 如果重命名笔记本,请立即单击右窗格中的试验图标。

在 Git 操作期间运行作业

在进行 Git 操作时,某些笔记本可能会更新,而其他笔记本尚未更新,从而导致行为不可预测。

例如,如果notebook A使用notebook Z调用%run,并且作业在Git操作期间启动,则作业可能会使用较新的notebook A与较旧的notebook Z版本一起运行。 作业可能会失败,或者运行来自不同提交的笔记本。

若要避免这种情况,请将作业任务配置为使用 Git 提供程序作为源而不是工作区路径。 请参阅将 Git 与作业配合使用

资源

有关 Databricks 工作区文件的详细信息,请参阅什么是工作区文件?