Git 與 Databricks Git 資料夾整合的限制和常見問題

Databricks Git 資料夾和 Git 整合具有下列各節中指定的限制。 如需一般資訊,請參閱 Databricks 限制

檔案和存放庫大小限制

Azure Databricks 不會對存放庫的大小強制執行限制。 但是:

  • 工作分支限制為 200 MB。
  • 個別工作區檔案受限於個別的大小限制。 如需詳細資訊,請參閱 限制
  • 無法在 Azure Databricks UI 中檢視大於 10 MB 的檔案。

Databricks 建議在存放庫中:

  • 所有檔案的總數不超過 10,000 個。
  • 筆記本總數不超過 5,000。

針對任何 Git 作業,記憶體使用量限製為 2 GB,而磁碟寫入限制為 4 GB。 由於限制是個別作業,因此如果您嘗試複製目前大小為 5 GB 的 Git 存放庫,就會發生失敗。 不過,如果您複製一項作業中大小為 3 GB 的 Git 存放庫,稍後再將 2 GB 新增至該存放庫,則下一個提取作業將會成功。

如果您的存放庫超過這些限制,您可能會收到錯誤訊息。 當您複製存放庫時,您可能也會收到逾時錯誤,但作業可能會在背景中完成。

若要使用大於大小限制的存放庫,請嘗試 疏鬆簽出

如果您必須寫入在關閉叢集之後不想保留的暫存盤,請寫入暫存盤以避免 $TEMPDIR 超過分支大小限制,如果 CWD 位於工作區文件系統中,則會產生比寫入目前工作目錄 (CWD) 更好的效能。 如需詳細資訊,請參閱 在 Azure Databricks 上寫入暫存盤的位置?

每個工作區的存放庫數目上限

每個工作區最多可以有 2,000 個存放庫。

Git 資料夾組態

Azure Databricks 存放庫內容儲存在哪裡?

存放庫的內容會暫時複製到控制平面中的磁碟上。 Azure Databricks Notebook 檔案會儲存在控制平面資料庫中,就像主要工作區中的筆記本一樣。 非筆記本檔案最多會儲存在磁碟上 30 天。

Git 資料夾是否支援內部部署或自我載入的 Git 伺服器?

如果伺服器可存取因特網,Databricks Git 資料夾支援 GitHub Enterprise、Bitbucket Server、Azure DevOps Server 和 GitLab 自我管理整合。 如需將 Git 資料夾與內部部署 Git 伺服器整合的詳細資訊,請參閱 Git 資料夾的 Git Proxy 伺服器。

若要與 Bitbucket Server、GitHub Enterprise Server 或無法存取因特網的 GitLab 自我管理訂用帳戶實例整合,請與您的 Azure Databricks 帳戶小組聯繫。

Git 資料夾支援哪些 Databricks 資產類型?

如需所支持資產類型的詳細資訊,請參閱 管理 Databricks Git 資料夾中的檔案資產。

Git 資料夾是否支援 .gitignore 檔案?

是。 如果您將檔案新增至存放庫,且不希望 Git 追蹤檔案,請建立 .gitignore 檔案或使用從遠端存放庫複製的檔案,並新增檔名,包括擴展名。

.gitignore 僅適用於 Git 尚未追蹤的檔案。 如果您將 Git 已追蹤的檔案新增至 .gitignore 檔案,Git 仍會追蹤該檔案。

我可以建立不是使用者資料夾的最上層資料夾嗎?

是,系統管理員可以建立最上層資料夾到單一深度。 Git 資料夾不支援其他資料夾層級。

Git 資料夾是否支援 Git 子模組?

否。 您可以複製包含 Git 子模組的存放庫,但不會複製子模組。

Azure Data Factory (ADF) 是否支援 Git 資料夾?

是。

來源管理

為什麼當我提取或簽出不同的分支時,筆記本儀錶板會消失?

這是目前的限制,因為 Azure Databricks 筆記本來源檔案不會儲存筆記本儀錶板資訊。

如果您想要保留 Git 存放庫中的儀錶板,請將筆記本格式變更為 .ipynb (Jupyter Notebook 格式)。 根據預設, .ipynb 支援儀錶板和視覺效果定義。 如果您想要保留圖形數據(數據點),您必須認可具有輸出的筆記本。

若要瞭解如何認可 .ipynb 筆記本輸出,請參閱 允許認可 .ipynb 筆記本輸出

Git 資料夾是否支援分支合併?

是。 您也可以建立提取要求,並透過 Git 提供者合併。

我可以從 Azure Databricks 存放庫刪除分支嗎?

否。 若要刪除分支,您必須在 Git 提供者中工作。

如果連結庫安裝在叢集上,且具有相同名稱的連結庫會包含在存放庫內的資料夾中,則會匯入哪個連結庫?

匯入存放庫中的連結庫。 如需 Python 中連結庫優先順序的詳細資訊,請參閱 Python 連結庫優先順序

我可以先從 Git 提取最新版本的存放庫,再執行作業,而不需要依賴外部協調流程工具嗎?

否。 一般而言,您可以將此整合為 Git 伺服器上的預先認可,讓每個推送至分支 (main/prod) 都會更新生產存放庫。

我可以匯出存放庫嗎?

您可以匯出筆記本、資料夾或整個存放庫。 您無法匯出非筆記本檔案。 如果您匯出整個存放庫,則不包含非筆記本檔案。 若要匯出,請使用 workspace export Databricks CLI 中的 命令或使用工作區 API

安全性、驗證和令牌

Microsoft Entra ID 的條件式存取原則 (CAP) 問題(先前稱為 Azure Active Directory)

當您嘗試複製存放庫時,可能會在下列情況下收到「拒絕存取」錯誤訊息:

  • Azure Databricks 已設定為搭配 Microsoft Entra ID 驗證使用 Azure DevOps。
  • 您已在 Azure DevOps 和 Microsoft Entra ID 條件式存取原則中啟用條件式存取原則。

若要解決此問題,請將排除專案新增至 Azure Databricks IP 位址或使用者的條件式存取原則 (CAP)。

如需詳細資訊,請參閱 條件式存取原則

允許具有 Azure AD 令牌的清單

如果您使用 Azure Active Directory (AAD) 向 Azure DevOps 進行驗證,默認允許清單會將 Git URL 限制為:

  • dev.azure.com
  • visualstudio.com

如需詳細資訊,請參閱 允許清單限制遠端存放庫使用方式

Azure Databricks Git 資料夾的內容是否加密?

Azure Databricks Git 資料夾的內容會由 Azure Databricks 使用預設密鑰加密。 除非加密您的 Git 認證,否則不支援使用客戶管理的金鑰進行加密。

GitHub 令牌儲存在 Azure Databricks 中的方式和位置? 神秘 可以從 Azure Databricks 存取嗎?

  • 驗證令牌會儲存在 Azure Databricks 控制平面中,而 Azure Databricks 員工只能透過稽核的暫時認證來取得存取權。
  • Azure Databricks 會記錄這些令牌的建立和刪除,但不會記錄其使用量。 Azure Databricks 有記錄可追蹤 Git 作業,可用來稽核 Azure Databricks 應用程式令牌的使用方式。
  • GitHub Enterprise 會稽核令牌使用量。 其他 Git 服務也可能有 Git 伺服器稽核。

Git 資料夾是否支援 GPG 簽署認可?

否。

Git 資料夾是否支援 SSH?

否,只有 HTTPS

將 Azure Databricks 連線至不同租用中的 Azure DevOps 存放庫時發生錯誤

嘗試在另一個租用中連線到 DevOps 時,您可能會收到訊息 Unable to parse credentials from Azure Active Directory account。 如果 Azure DevOps 專案位於與 Azure Databricks 不同的 Microsoft Entra ID 租用中,您需要從 Azure DevOps 使用存取令牌。 請參閱使用 DevOps 令牌 連線 至 Azure DevOps。

CI/CD 和 MLOps

傳入的變更會清除筆記本狀態

改變筆記本原始程式碼的 Git 作業會導致筆記本狀態遺失,包括儲存格輸出、批注、版本歷程記錄和小工具。 例如, git pull 可以變更筆記本的原始程式碼。 在此情況下,Databricks Git 資料夾必須覆寫現有的筆記本以匯入變更。 git commitpush 或建立新的分支不會影響筆記本原始程式碼,因此筆記本狀態會保留在這些作業中。

我可以在存放庫中建立 MLflow 實驗嗎?

MLflow 實驗有兩種類型: 工作區筆記本。 如需這兩種 MLflow 實驗類型的詳細資訊,請參閱 使用 MLflow 實驗組織定型執行。

在 Git 資料夾中,您可以針對mlflow.set_experiment("/path/to/experiment")其中一種類型和記錄執行呼叫 MLflow 實驗,但該實驗和相關聯的執行將不會簽入原始檔控制。

工作區 MLflow 實驗

您無法 在 Databricks Git 資料夾中建立工作區 MLflow 實驗 (Git 資料夾)。 如果多個使用者使用個別的 Git 資料夾在相同的 ML 程式代碼上共同作業,則記錄 MLflow 會執行至在一般工作區資料夾中建立的 MLflow 實驗。

Notebook MLflow 實驗

您可以在 Databricks Git 資料夾中建立筆記本實驗。 如果您將筆記本簽入原始檔控制, .ipynb 您可以將 MLflow 執行記錄至自動建立的和相關聯的 MLflow 實驗。 如需詳細資訊,請參閱 建立筆記本實驗

防止 MLflow 實驗中的數據遺失

警告

當您切換到不包含筆記本的分支時,您都有可能遺失相關聯的 MLFlow 實驗數據。 如果前一個分支在 30 天內未存取,則此遺失會變成寬鬆。

若要在 30 天到期前復原遺漏的實驗數據, 請將筆記本重新命名回原始名稱,開啟筆記本,按下右側窗格上的 [實驗] 圖示(這也會有效地呼叫 mlflow.get_experiment_by_name() API),而且您將可以看到已復原的實驗並執行。 30 天后,將會清除任何孤立的 MLflow 實驗,以符合 GDPR 合規性政策。

若要避免這種情況,Databricks 建議您避免在存放庫中重新命名筆記本,或者如果您重新命名筆記本,請在重新命名筆記本之後,立即按下右側窗格中的 [實驗] 圖示。

當 Git 作業正在進行時,筆記本作業在工作區中執行時會發生什麼事?

在 Git 作業進行中時,存放庫中的某些筆記本可能已更新,而其他筆記本則沒有更新。 這可能會導致未預期的行為。

例如,假設notebook A使用 %run 命令呼叫notebook Z。 如果在 Git 作業期間執行的作業會啟動 最新版本 notebook A,但 notebook Z 尚未更新, %run 筆記本 A 中的命令可能會啟動舊版 的 notebook Z。 在 Git 作業期間,筆記本狀態無法預測,作業可能會失敗或從不同的認可執行notebook Anotebook Z

若要避免這種情況,請改用 Git 型作業(其中來源是 Git 提供者,而不是工作區路徑)。 如需詳細資訊,請參閱 在 Azure Databricks 作業中使用版本控制的原始程式碼。

資源

如需 Databricks 工作區檔案的詳細資訊,請參閱 什麼是工作區檔案?