什麼是 init 指令碼?
init 文稿(初始化腳本)是在 Apache Spark 驅動程式或執行程式 JVM 啟動時在每個叢集節點啟動時執行的殼層腳本。 如果您必須使用 init 腳本和組態資訊,本文會提供建議。
init 腳本的建議
Databricks 建議盡可能使用內建平臺功能,而不是 init 腳本。 廣泛使用 init 腳本可能會減緩移轉至新的 Databricks 運行時間版本,並防止採用某些 Databricks 優化。
重要
如果您需要從 DBFS 上的 init 腳本移轉,請參閱 從 DBFS 移轉 init 腳本。
下列 Databricks 功能可解決 init 腳本的一些常見使用案例:
如果您必須使用 init 命令稿:
- 使用計算原則或叢集範圍的 init 腳本來管理 init 腳本,而不是全域 init 腳本。 請參閱 init 腳本類型。
- 使用計算原則管理生產環境與互動式環境的連結庫安裝。 請勿使用 init 腳本安裝連結庫。
- 針對所有工作負載使用共用存取模式。 只有在共用存取模式不支援必要的功能時,才使用單一使用者存取模式。
- 針對所有工作負載使用新的 Databricks 執行時間版本和 Unity 目錄。
下表提供 Databricks Runtime 版本和 Unity 目錄啟用所組織的建議。
Environment | 建議 |
---|---|
使用 Unity 目錄的 Databricks Runtime 13.3 LTS 和更新版本 | 將 init 文稿儲存在 Unity 目錄 磁碟區中。 |
不含 Unity 目錄的 Databricks Runtime 11.3 LTS 和更新版本 | 將 init 腳本儲存為 工作區檔案。 (檔案大小限制為 500 MB)。 |
Databricks Runtime 10.4 LTS 和以下版本 | 使用 雲端物件記憶體儲存 init 腳本。 |
Azure Databricks 支援哪些類型的 init 腳本?
Azure Databricks 支援兩種 init 腳本:叢集範圍和全域,但建議使用叢集範圍的 init 腳本。
- 叢集範圍:在以腳本設定的每個叢集上執行。 這是執行 init 腳本的建議方式。 請參閱 使用叢集範圍的 init 腳本。
- 全域:在以單一使用者存取模式或無隔離共用存取模式設定的工作區中的所有叢集上執行。 這些 init 腳本可能會導致非預期的問題,例如連結庫衝突。 只有工作區系統管理員使用者可以建立全域 init 腳本。 請參閱 使用全域 init 腳本。
每當變更任何類型的init腳本時,都必須重新啟動受腳本影響的所有叢集。
全域 init 腳本會在叢集範圍的 init 腳本之前執行。
重要
舊版全域和舊版叢集命名的 init 腳本會在其他 init 腳本之前執行。 這些 init 腳本是生命周期結束,但可能會出現在 2023 年 2 月 21 日之前建立的工作區中。 請參閱叢集命名的init腳本(舊版)和全域 init 腳本(舊版)。
您可以在何處安裝 init 腳稿?
您可以從工作區檔案、Unity 目錄磁碟區和雲端物件記憶體儲存和設定 init 腳本,但所有叢集組態都不支援 init 腳本,而且並非所有檔案都可以從 init 腳本參考。 如需 init 腳本的環境建議,請參閱 init 腳本的建議。
下表指出支援以來源位置和叢集存取模式為基礎的 init 腳本。 列出的 Databricks Runtime 版本是使用組合所需的最低版本。 如需叢集存取模式的相關信息,請參閱 存取模式。
注意
共用存取模式需要系統管理員將 init 文稿新增至 allowlist
。 請參閱 共享計算上的 Allowlist 連結庫和 init 腳本。
共用存取模式 | 單一存取模式 | 無隔離共用存取模式 | |
---|---|---|---|
工作區檔案 | 不支援 | 所有支援的 Databricks 執行時間版本。 在 11.3 LTS 以下的版本上,不支持參考其他工作區檔案的 init 腳本。 |
所有支援的 Databricks 執行時間版本。 |
磁碟區 | 13.3 LTS 和更新版本 | 13.3 LTS 和更新版本 | 不支援 |
雲端儲存空間 | 13.3 LTS 和更新版本 | 所有支援的 Databricks 執行時間版本 | 所有支援的 Databricks 執行時間版本 |
從 DBFS 移轉 init 腳本
警告
DBFS 上的 Init 腳本已達到生命週期結束,無法再使用。 您必須先將 init 腳本移轉至支援的位置,才能開始計算。 將 init 文稿儲存在 Unity 目錄磁碟區、工作區檔案或雲端物件記憶體中。
需要從 DBFS 移轉 init 腳本的使用者可以使用下列指南。 請確定您已識別出組態的正確目標。 請參閱 init 腳本的建議。