您可以設定 Spark 組態屬性來自訂計算環境中的設定。
Databricks 通常會建議不設定大部分的Spark屬性。 特別是從開放原始碼 Apache Spark 移轉或升級 Databricks 運行環境版本時,舊版 Spark 組態可以覆寫優化工作負載的新預設方式。
對於許多由 Spark 屬性控制的行為,Azure Databricks 也提供選項,讓它能在資料表層級啟用行為,或在寫入操作中設定自訂行為。 例如,結構演化過去由 Spark 屬性控制,現在已涵蓋 SQL、Python 和 Scala。 請參考MERGE使用 SQL、Python 和 Scala 進行結構演進。
設定筆記本和作業的Spark屬性
您可以設定筆記本和作業的 Spark 屬性。 組態的範圍取決於您設定它的方式。
| 屬性配置 | 適用對象 |
|---|---|
| 使用計算組態 | 所有筆記本和作業都會使用計算資源執行。 |
| 在筆記本內 | 只有目前筆記本的 SparkSession。 |
如需在計算層級設定 Spark 屬性的指示,請參閱 Spark 設定。
若要在筆記本中設定 Spark 屬性,請使用下列語法:
SQL
SET spark.sql.ansi.enabled = true
Python
spark.conf.set("spark.sql.ansi.enabled", "true")
程式語言 Scala
spark.conf.set("spark.sql.ansi.enabled", "true")
在 Databricks SQL 中設定 Spark 屬性
Databricks SQL 可讓系統管理員在工作區設定功能表中設定用於數據存取的 Spark 屬性。 請參閱 數據存取組態
除了數據存取組態之外,Databricks SQL 只允許少數 Spark confs,為了簡單起見,已將它別名為較短的名稱。 請參閱 組態參數。
針對大部分支援的 SQL 組態,您可以覆寫目前會話中的全域行為。 下列範例會關閉 ANSI 模式:
SET ANSI_MODE = false
為 Lakeflow 管線配置 Spark 屬性
Lakeflow 管線可讓你為管線、為管線設定的單一運算資源,或個別流程、實體化檢視或串流資料表設定 Spark 屬性。
您可以使用 UI 或 JSON 來設定管線和計算 Spark 屬性。 請參見 「配置管線」。
在 Lakeflow 管線裝飾函式中使用 spark_conf 選項,為流程、檢視或資料表設定 Spark 屬性。 請參閱 Lakeflow 管線 Python 語言參考資料。
為無伺服器的筆記和作業設定 Spark 屬性
無伺服器計算無法支援為筆記本或工作設置大多數的 Spark 屬性。 以下是您可以設定的屬性:
| 財產 | 預設 | 描述 |
|---|---|---|
spark.databricks.execution.timeout |
9000 (僅適用於筆記本) |
Spark Connect 查詢的執行逾時,以秒為單位。 預設值僅適用於筆記本查詢。 Workspace 管理員可以在 Workspace 管理設定中更改無伺服器筆記本的預設值。 請參見 無伺服器超支保護。 對於在無伺服器計算上執行的作業 (以及在傳統標準計算上執行的作業),除非設定此屬性,否則不會逾時。 |
spark.sql.legacy.timeParserPolicy |
CORRECTED |
時間解析政策。 |
spark.sql.session.timeZone |
Etc/UTC |
會話本地時區的標識碼,格式可以是基於區域的時區標識碼或是時區偏移。 |
spark.sql.shuffle.partitions |
auto |
用於進行聯結或聚合時隨機處理數據的預設分割區數目。 |
spark.sql.ansi.enabled |
true |
如果值為 true,Spark SQL 將使用符合 ANSI 標準的語法,而不是符合 Hive 規範。 |
spark.sql.files.maxPartitionBytes |
134217728 (128 MB) | 讀取檔案時要封裝到單一分割區中的位元組數上限。 |
不支援的 Spark 屬性
以下 Spark 設定屬性不支援 Azure Databricks。 不支援的 Spark 屬性要麼被 Azure Databricks 忽略,要麼在與 Azure Databricks 功能同時使用時,可能會引發衝突與失敗。 如果你正在將工作負載遷移到 Azure Databricks,請用推薦的替代方案替換不支援的屬性。
Note
除了此處列出的屬性外,Databricks 執行 19 及以上版本的 標準存取模式 還限制了某些 Spark 設定屬性。 建立或編輯設定受限屬性的叢集會因錯誤而失敗。 請參見 Spark 配置限制。
| 不支援的 Spark 屬性 | 適用對象 | Databricks 替代方案 |
|---|---|---|
spark.dynamicAllocation.enabledspark.dynamicAllocation.initialExecutorsspark.dynamicAllocation.minExecutorsspark.dynamicAllocation.maxExecutorsspark.dynamicAllocation.executorIdleTimeout |
傳統運算 | 改用 Azure Databricks 自動擴展,該系統在平台層級管理執行器生命週期。 請參閱啟用自動調整。 |
spark.masterspark.driver.hostspark.driver.port |
無伺服器計算與 Lakeflow 管線 | Azure Databricks 無伺服器基礎架構會自動管理這些內部連線屬性。 它們不能由使用者自行設定。 將它們設在無伺服器計算或 Lakeflow 管線上會導致錯誤。 |
spark.jars |
無伺服器計算與 Lakeflow 管線 | Azure Databricks 不支援使用 Spark 配置將 JAR 附加到無伺服器運算或 Lakeflow 管線,但你可以執行無伺服器的 JAR 任務。 請參閱 設定工作工作的環境。 |
spark.databricks.runtimeoptions.* |
傳統運算 | 改用 runtime_options 叢集設定中的屬性。 執行時選項不能在任何叢集類型中設為 Spark 設定。 嘗試使用 Spark 配置設定這些會發生錯誤。 |
取得Spark組態的目前設定
使用下列語法來檢閱 Spark 組態的目前設定:
spark.conf.get("configuration_name")