共用方式為


什麼是 Fabric 中 Apache Spark 設定的自動調整?

自動調整會自動調整 Apache Spark 設定,以加速工作負載執行,並將整體效能優化。 相較於手動調整,自動調整可節省時間和資源,這需要大量投入、資源、時間和實驗。 Autotune 會使用工作負載中的歷程記錄執行數據,反覆探索並套用特定工作負載最有效的組態。

注意

Microsoft Fabric 中的自動調整查詢微調功能目前為預覽狀態。

查詢微調

Autotune 會針對每個查詢分別設定三個 Spark 設定:

  • spark.sql.shuffle.partitions - 設定聯結或匯總期間數據洗牌的數據分割計數。 預設值為 200。
  • spark.sql.autoBroadcastJoinThreshold - 設定執行聯結作業時廣播到所有背景工作節點的位元組大小上限。 預設值是 10 MB。
  • spark.sql.files.maxPartitionBytes - 定義讀取檔案時要封裝到單一分割區的最大位元元組數目。 適用於 Parquet、JSON 和 ORC 檔案型來源。 預設值為 128 MB。

提示

自動調整查詢微調會檢查個別查詢,併為每個查詢建置不同的ML模型。 它特別針對:

  • 重複的查詢
  • 長時間執行的查詢(執行超過 15 秒的查詢)
  • Spark SQL API 查詢(不包括以 RDD API 撰寫的查詢非常罕見),但我們優化所有查詢,無論語言為何(Scala、PySpark、R、Spark SQL)

此功能與筆記本、Spark 作業定義和管線相容。 優點會根據查詢的複雜度、所使用的方法和結構而有所不同。 廣泛的測試顯示,與探勘數據分析相關的查詢有最大的優點,例如讀取數據、執行聯結、匯總和排序。

啟用自動調整的運行時間螢幕快照。

Autotune 背後的 AI 直覺

自動調整功能會利用反覆程式來優化查詢效能。 它會從預設組態開始,並採用機器學習模型來評估有效性。 當使用者提交查詢時,系統會根據先前的互動來擷取預存的模型。 它會在名為 心心的預設設定周圍產生潛在的組態。 會套用模型預測的最佳候選專案。 查詢執行之後,效能數據會傳回系統以精簡模型。

意見反應循環會逐漸將心移轉至最佳設定。 它會在一段時間內精簡效能,同時將回歸的風險降到最低。 根據使用者查詢進行持續更新,可精簡效能效能評定。 此外,此程式會 更新心形 設定,以確保模型以累加方式轉向更有效率的設定。 這可藉由評估過去的效能,並使用它們來引導未來的調整來達成。 它會使用所有數據點來減輕異常的影響。

從負責任的 AI 觀點來看,Autotune 功能包含透明度機制,旨在讓您隨時了解數據使用量和優點。 安全性和隱私權符合 Microsoft 的標準。 持續監視會在啟動後維護效能和系統完整性。

啟用自動調整

自動調整可在所有生產區域使用,但預設為停用。 您可以透過環境中的 Spark 組態設定加以啟用。 若要啟用 Autotune,請建立新的環境,或為現有的環境設定 Spark 屬性 'spark.ms.autotune.enabled = true',如下列螢幕快照所示。 然後,此設定會由在該環境中執行的所有筆記本和作業繼承,並自動調整它們。

啟用自動調整的螢幕快照。

Autotune 包含監視效能和偵測效能回歸的內建機制。 例如,如果查詢處理異常大量的數據,Autotune 會自動停用。 通常需要 20 到 25 個反覆專案才能學習並識別最佳設定。

注意

Autotune 與 Fabric Runtime 1.1Runtime 1.2 兼容。 當高並行模式或啟用私人端點,Autotune 不會運作。 不過,不論自動調整的組態為何,自動調整都能順暢地與自動調整整合。

您可以透過Spark 設定 控制個別 Spark 筆記本或 Spark 作業定義程式代碼的 Autotune。 若要停用 Autotune,請執行下列命令作為程式代碼的第一個數據格 (Notebook) 或程式碼行 (SJD)。

%%sql 
SET spark.ms.autotune.enabled=FALSE 

案例研究

執行 Spark 查詢時,autotune 會建立自定義 ML 模型,以優化查詢的執行。 其會分析查詢模式和資源需求。 請考慮根據特定屬性篩選數據集的初始查詢,例如國家/地區。 雖然此範例使用地理篩選,但原則會普遍套用至查詢內的任何屬性或作業:

%%pyspark
df.filter(df.country == "country-A")

Autotune 會從此查詢學習,以優化後續的執行。 例如,當查詢變更時,藉由改變篩選值或套用不同的數據轉換,查詢的結構本質通常會保持一致:

%%pyspark
df.filter(df.country == "country-B")

儘管有變更,但 autotune 仍會識別新查詢的基本結構,並實作先前學到的優化。 這項功能可確保持續高效,而不需要針對每個新的查詢反覆專案手動重新設定。

記錄

針對每個查詢,autotune 會決定三個Spark組態的最佳設定。 您可以瀏覽至記錄來檢視建議的設定。 autotune 建議的設定位於驅動程序記錄中,特別是從 [Autotune] 開始的專案

監視中樞內自動調整記錄的螢幕快照。

您可以在記錄中找到各種類型的專案。 下列包含主要金鑰:

狀態 描述
AUTOTUNE_DISABLED 已略過。 已停用 Autotune;防止遙測數據擷取和查詢優化。 啟用 Autotune 以充分運用其功能,同時尊重客戶隱私權。」。
QUERY_TUNING_DISABLED 已略過。 已停用自動調整查詢微調。 啟用它以微調 Spark SQL 查詢的設定。
QUERY_PATTERN_NOT_MATCH 已略過。 查詢模式不相符。 自動調整對唯讀查詢有效。
QUERY_DURATION_TOO_SHORT 已略過。 您的查詢持續時間太短,無法優化。 Autotune 需要較長的查詢,以有效調整。 查詢應該至少執行 15 秒。
QUERY_TUNING_SUCCEED 成功。 查詢微調已完成。 已套用最佳 Spark 設定。

透明度注意事項

為了遵守負責任 AI 標準,本節旨在釐清 Autotune 功能的用途和驗證,促進透明度並啟用明智的決策。

Autotune 的用途

Autotune 是專為增強 Apache Spark 工作負載效率而開發的,主要是針對數據專業人員。 其主要功能包括:

  • 自動化 Apache Spark 組態微調,以減少運行時間。
  • 將手動微調工作降至最低。
  • 利用歷程記錄工作負載數據反覆精簡設定。

Autotune 驗證

Autotune 經過廣泛的測試,以確保其有效性和安全性:

  • 使用各種Spark工作負載進行嚴格的測試,以驗證微調演算法的效能。
  • 針對標準 Spark 優化方法進行效能評定,以示範效能優勢。
  • 真實世界的案例研究強調 Autotune 的實際價值。
  • 遵循嚴格的安全性和隱私權標準來保護用戶數據。

用戶數據專門用來增強工作負載的效能,具有強固的保護,以防止誤用或暴露敏感性資訊。