Init 腳本可以存取叢集上存在的環境變數。
Note
本頁描述經典運算中初始化腳本的環境變數。 若要在無伺服器 Lakeflow Jobs 任務中將環境變數傳給應用程式程式碼,請參見 「為無伺服器工作配置環境變數」。
Note
在 Databricks 執行時 19 及以上的 標準存取模式下 ,初始化腳本僅能使用預設的環境變數集合。 你在叢集上設定的其他變數,包括 UDF,仍然可以被使用者程式碼使用,但 init 腳本無法使用。 請參見 環境變數限制。
默認環境變數
Azure Databricks 設定了許多預設變數,這些變數在 init script 邏輯中非常有用。 叢集範圍和全域 init 指令碼支援下列環境變數:
-
DB_CLUSTER_ID:指令碼執行所在的叢集標識符。 請參閱叢集 API。 -
DB_CONTAINER_IP:Spark 執行所在的容器私人 IP 位址。 init 指令碼會在此容器內執行。 請參閱叢集 API。 -
DB_IS_DRIVER:指令碼是否在驅動程式節點上執行。 -
DB_DRIVER_IP:驅動程式節點的IP位址。 -
DB_INSTANCE_TYPE:主機 VM 的執行個體類型。 -
DB_CLUSTER_NAME:指令碼正在執行的叢集名稱。 -
DB_IS_JOB_CLUSTER:是否已建立叢集以執行工作。 請參閱設定作業所需的運算資源。
您無法覆寫這些預先定義的環境變數。
設定自訂環境變數
你可以在 Spark 設定中設定從執行的 初始化腳本 存取的自訂環境變數。詳見 環境變數。
您也可以使用 spark_env_vars 建立 叢集 API 或 更新叢集 API 中的 欄位來設定環境變數。
使用環境變數
以下範例使用預設環境變數,僅在驅動節點上執行腳本的一部分:
echo $DB_IS_DRIVER
if [[ $DB_IS_DRIVER = "TRUE" ]]; then
<run this part only on driver>
else
<run this part only on workers>
fi
<run this part on both driver and workers>
init 腳本中的秘密
當您參考祕密時,可以使用任何有效的變數名稱。 環境變數中參考的祕密存取權取決於設定叢集的使用者權限。 儲存在環境變數中的秘密可以由叢集的所有使用者存取,但會從純文字顯示中隱藏。