針對叢集的 init 腳本是在叢集配置中定義的 init 腳本。 針對叢集的初始化腳本不僅會套用到您所建立的叢集,還會套用至用來執行工作的叢集。
您可以使用UI、CLI和叫用叢集 API 來設定叢集範圍的 init 腳本。 本節著重於使用 UI 執行這些工作。 如需其他方法,請參閱 Databricks CLI 和 叢集 API。
您可以新增任意數目的腳本,而且腳本會依提供的順序循序執行。
如果叢集範圍的 init 腳本傳回非零結束代碼,叢集啟動 就會失敗。 您可以藉由設定叢集日志傳送和檢查初始化腳本記錄,排除叢集級別的初始化腳本的問題。 請參閱 初始化腳本記錄。
使用UI設定叢集範圍的初始化腳本
本節包含使用 Azure Databricks UI 設定叢集以執行 init 腳本的指示。
Databricks 建議將所有初始化腳本管理為叢集範圍的初始化腳本。 如果您使用標準或專用存取模式進行計算(以前稱為共用和單一使用者存取模式),請將 init 腳本儲存在 Unity Catalog 的儲存體區中。 如果您在使用無隔離共享訪問模式的計算,請使用工作區文件作為初始化腳本。
針對標準存取模式,您必須將 init 腳本新增至 allowlist
。 請參閱 使用標準存取模式計算的 Allowlist 連結庫和 init 命令稿(先前稱為共用存取模式)。
若要使用UI來設定叢集以執行init腳本,請完成下列步驟:
- 在 [叢集組態] 頁面上,按兩下 [ 進階 ] 切換。
- 在頁面底部,點擊初始腳本標籤。
- 在 [來源] 下拉式清單中,選取 [工作區]、[磁碟區] 或 [ABFSS 來源類型]。
- 指定 init 指令稿的路徑,例如下列其中一個範例:
- 針對儲存在工作區檔案中的啟動腳本:
/Workspace/<path-to-script>/<script-name>.sh
- 針對 Unity 目錄磁碟區中儲存的 init 腳本:
/Volumes/<catalog>/<schema>/<volume>/<path-to-script>/<script-name>.sh
- 針對以物件儲存服務保存的初始化腳本:
abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/init-script
- 針對儲存在工作區檔案中的啟動腳本:
- 按一下新增。
在專用存取模式中,會使用指派主體的身分識別(用戶或服務主體)。
在標準存取模式中,會使用叢集擁有者的身分識別。
注意
無隔離共用存取模式不支援磁碟區,但使用與標準存取模式相同的身分識別指派。
若要從叢集組態中移除腳本,請按下腳本右側的回收站圖示。 當您確認刪除時,系統會提示您重新啟動叢集。 您可以選擇性地將文稿檔案從上傳至的位置刪除。
注意
如果您使用 ABFSS 來源類型來設定 init 腳本,則必須設定存取認證。
Databricks 建議使用 Microsoft Entra ID 服務主體來管理 Azure Data Lake Storage 中儲存之 init 腳本的存取權。 使用下列連結的檔案來完成此設定:
在目標 Blob 上建立具有讀取和列出權限的服務主體。 請參閱 使用服務主體存取記憶體和 Microsoft Entra ID(Azure Active Directory)。
使用密鑰儲存您的認證。 請參閱 管理秘密。
在建立叢集時設定 Spark 組態和環境變數中的屬性,如下列範例所示:
Spark 組態:
spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id> spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}} spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
環境變數:
SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
(選擇性)使用 azcopy 或 Azure CLI 重構 init 腳本。
您可以在 init 腳本內的叢集設定期間參考環境變數,以傳遞儲存為驗證秘密的認證。
警告
DBFS 上的叢集範圍 init 腳本即將淘汰。 UI 中的 DBFS 選項存在於某些工作區中,以支援舊版工作負載,不建議使用。 所有儲存在 DBFS 中的 init 腳本都應該移轉。 如需移轉指示,請參閱 從 DBFS 移轉 init 腳本。
針對叢集範圍的初始化腳本進行疑難解答
- 腳本必須存在於設定的位置。 如果腳本不存在,嘗試啟動叢集或相應增加執行程式會導致失敗。
- init 腳本不能大於 64KB。 如果腳本超過該大小,叢集將無法啟動,而且叢集記錄檔中會出現失敗訊息。