叢集範圍的 init 指令碼
叢集範圍的 init 腳本是在叢集組態中定義的 init 腳本。 叢集範圍的 init 腳本會套用至您所建立的叢集,以及用來執行作業的叢集。
您可以使用UI、CLI和叫用叢集 API 來設定叢集範圍的 init 腳本。 本節著重於使用 UI 執行這些工作。 如需其他方法,請參閱 Databricks CLI 和 叢集 API。
您可以新增任意數目的腳本,而且腳本會依提供的順序循序執行。
如果叢集範圍的 init 腳本傳回非零結束代碼,叢集啟動 就會失敗。 您可以藉由設定 叢集記錄傳遞 和檢查 init 腳本記錄,對叢集範圍的 init 腳本進行疑難解答。 請參閱 Init 腳本記錄。
使用UI設定叢集範圍的init腳本
本節包含使用 Azure Databricks UI 設定叢集以執行 init 腳本的指示。
Databricks 建議將所有 init 腳本管理為叢集範圍的 init 腳本。 如果您使用計算搭配共用或單一使用者存取模式,請將init腳本儲存在 Unity 目錄磁碟區中。 如果您使用不含隔離共用存取模式的計算,請使用 init 腳本的工作區檔案。
針對共用存取模式,您必須將 init 文稿新增至 allowlist
。 請參閱共用計算上的 Allowlist 程式庫和 init 指令碼。
若要使用UI來設定叢集以執行init腳本,請完成下列步驟:
- 在 [叢集組態] 頁面上,按兩下 [ 進階選項] 切換。
- 在頁面底部,按兩下 [Init 腳稿 ] 索引標籤。
- 在 [ 來源 ] 下拉式清單中,選取 [工作區]、 [磁碟區] 或 [ABFSS 來源類型]。
- 指定 init 指令稿的路徑,例如下列其中一個範例:
- 對於儲存在主目錄中且具有工作區檔案的 init 腳本:
/Users/<user-name>/<script-name>.sh
。 - 針對使用 Unity 目錄磁碟區儲存的 init 腳本:
/Volumes/<catalog>/<schema>/<volume>/<path-to-script>/<script-name>.sh
。 - 針對以物件記憶體儲存的init腳本:
abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/init-script
。
- 對於儲存在主目錄中且具有工作區檔案的 init 腳本:
- 按一下新增。
在單一使用者存取模式中,會使用指派主體的身分識別(用戶或服務主體)。
在共用存取模式中,會使用叢集擁有者的身分識別。
注意
無隔離共用存取模式不支援磁碟區,但使用與共用存取模式相同的身分識別指派。
若要從叢集組態中移除腳本,請按下腳本右側的回收站圖示。 當您確認刪除時,系統會提示您重新啟動叢集。 您可以選擇性地將文稿檔案從上傳至的位置刪除。
注意
如果您使用 ABFSS 來源類型來設定 init 腳本,則必須設定存取認證。
Databricks 建議使用 Microsoft Entra ID 服務主體來管理 Azure Data Lake Storage Gen2 中儲存之 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 腳本進行疑難解答
- 腳本必須存在於設定的位置。 如果腳本不存在,嘗試啟動叢集或相應增加執行程式會導致失敗。
- init 腳本不能大於 64KB。 如果腳本超過該大小,叢集將無法啟動,而且叢集記錄檔中會出現失敗訊息。