什麼是 Fabric 中 Apache Spark 設定的自動調整?
自動調整功能會自動調整 Apache Spark 設定,以加速工作負載執行,並將整體效能最佳化。 與需要大量投入、資源、時間和實驗的手動調整功能相較之下,自動調整功能可以節省時間和資源。 自動調整功能會使用工作負載的歷史執行資料,來反覆探索並套用特定工作負載最有效的組態。
注意
Microsoft Fabric 中的自動調整查詢微調功能目前為預覽版。 自動調整功能可在所有生產區域使用,但預設為停用。 您可以在環境內或單一工作階段內透過 Spark 組態設定來啟用它,方法是在 Spark 筆記本或 Spark 工作定義程式碼中包括各自 Spark 設定。
查詢微調
自動調整功能會針對每個查詢分別設定三個 Apache Spark 設定:
spark.sql.shuffle.partitions
– 設定聯結或彙總期間資料隨機播放的分割區計數。 預設值為 200。spark.sql.autoBroadcastJoinThreshold
– 設定執行聯結作業時廣播到所有背景工作角色節點的資料表大小上限 (以位元組為單位)。 預設值是 10 MB。spark.sql.files.maxPartitionBytes
– 讀取檔案時,定義要封裝成單一分割區的位元組數目上限。 適用於 Parquet、JSON 和 ORC 檔案型來源。 預設值是 128 MB。
提示
自動調整查詢微調會檢查個別查詢,並為每個查詢建置不同的 ML 模型。 它專門針對:
- 重複的查詢
- 長時間執行的查詢(執行 15 秒以上的查詢)
- Apache Spark SQL API 查詢 (不包括以 RDD API 撰寫的查詢,此類查詢非常少見),但我們最佳化所有查詢,而不論語言為何 (Scala、PySpark、R、Spark SQL)
這項功能相容於筆記本、Apache Spark 工作定義和管線。 優點會隨著查詢的複雜度、所使用的方法和結構而有所不同。 廣泛的測試顯示,透過與探索式資料分析相關的查詢即可實現有最大的優點,例如讀取資料、執行聯結、彙總和排序。
自動調整功能背後的 AI 直覺
自動調整功能會利用迭代程序來最佳化查詢效能。 它會從預設組態開始,並採用機器學習模型來評估有效性。 使用者提交查詢時,系統會根據先前的互動來擷取儲存的模型。 它會以 centroid 的預設設定產生潛在的設定。 套用模型預測的最佳候選項目。 查詢執行之後,效能資料會傳回系統以調整模型。
意見反應迴圈會逐漸將 centroid 朝最佳設定前去。 它會隨著時間調整效能,同時將迴歸的風險降到最低。 根據使用者查詢進行持續更新,則可調整效能基準。 此外,此程序會更新 centroid 設定,以確保模型逐漸朝向更有效率的設定邁進。 這可藉由評估過去的效能,並使用它們來引導未來的調整來達成。 它會使用所有資料點來降低異常狀況的風險。
從負責任 AI 的觀點來看,自動調整功能包含透明度機制,旨在讓您隨時了解資料使用量和優點。 安全性和隱私權符合 Microsoft 的標準。 持續監視可在啟動後維持效能和系統完整性。
啟用自動調整
自動調整功能可在所有生產區域使用,但預設為停用。您可以在環境內內透過 Spark 組態設定來啟用它。若要啟用自動調整,無論是建立新環境或用於現有環境,請如以下螢幕擷取畫面所示,設定 Spark 屬性"spark.ms.autotune.enabled = true"。所有在該環境中執行的所有筆記本和工作都會繼承此設定,自動調整它們。
自動調整功能包括監視效能和偵測效能迴歸的內建機制。 例如,如果查詢處理異常大量的資料,自動調整功能會自動停用。 一般需要 20 到 25 個反覆項目才能學習並識別最佳設定。
注意
Autotune 相容於 Fabric Runtime 1.1 和 Runtime 1.2。 高並行模式或私人端點啟用時,自動調整功能不會運作。 不過,不論其設定為何,自動調整功能都能順暢地與自動調整規模功能整合。
您可以在單一工作階段內啟用自動調整功能,方法是在 Spark 筆記本或 Spark 工作定義程式代碼中包括各自 Spark 設定。
%%sql
SET spark.ms.autotune.enabled=TRUE
您可以透過各自 Spark 筆記本或 Spark 工作定義程式碼的 Spark 設定來控制自動調整功能。 若要停用自動調整功能,請執行下列命令作為程式碼的第一個儲存格 (Notebook) 或行 (SJD)。
%%sql
SET spark.ms.autotune.enabled=FALSE
案例研究
執行 Apache Spark 查詢時,自動調整功能會建立專用於最佳化查詢執行的自訂 ML 模型。 其會分析查詢模式和資源需求。 請考慮根據特定屬性 (例如國家/地區) 篩選資料集的初始查詢,。 雖然此範例使用地理篩選,但此原則通用於查詢內的任何屬性或作業:
%%pyspark
df.filter(df.country == "country-A")
自動調整功能會從此查詢學習,以最佳化後續的執行。 例如,當查詢變更時,修改篩選值或套用不同的資料轉換後,查詢的結構本質常會保持一致:
%%pyspark
df.filter(df.country == "country-B")
儘管有所修改,但自動調整功能仍會識別新查詢的基本結構,並實作先前學到的最佳化。 此功能可確保持續高效率,而無需對每個新的查詢反覆項目手動重新設定。
記錄
自動調整功能會對每個查詢判斷三個 Spark 組態的最佳設定。 您可以瀏覽至記錄,來檢視建議的設定。 自動調整功能建議的設定位於驅動程式記錄中,特別是從 [Autotune] 開始的項目。
您可以在記錄中找到各種類型的項目。 以下包括關鍵的項目:
狀態 | 描述 |
---|---|
AUTOTUNE_DISABLED | 已略過。 已停用自動調整功能,防止遙測資料擷取和查詢最佳化。 啟用自動調整功能以充分運用其功能,同時尊重客戶隱私」。 |
QUERY_TUNING_DISABLED | 已略過。 已停用自動調整查詢微調。 啟用它以微調 Spark SQL 查詢的設定。 |
QUERY_PATTERN_NOT_MATCH | 已略過。 查詢模式不符。 自動調整功能對唯讀查詢有效。 |
QUERY_DURATION_TOO_SHORT | 已略過。 您的查詢持續時間太短,無法最佳化。 自動調整功能需要較長的查詢,以有效微調。 查詢應該至少執行 15 秒。 |
QUERY_TUNING_SUCCEED | 成功。 查詢微調已完成。 已套用最佳 Spark 設定。 |
透明度注意事項
為了遵守負責任 AI 標準,本節旨在闡述自動調整功能的用途和驗證,藉此促進透明度並啟用明智的決策。
自動調整功能的用途
自動調整功能是專為增強 Apache Spark 工作負載效率而開發的,主要適用於資料專業人員。 其主要功能包括:
- 自動化 Apache Spark 組態微調,以減少執行時間。
- 將手動微調工作降至最低。
- 利用歷史工作負載資料反覆調整設定。
自動調整驗證
自動調整功能經過廣泛的測試,以確保其有效性和安全性:
- 使用各種 Spark 工作負載進行嚴格的測試,以驗證微調演算法的效用。
- 針對標準 Spark 最佳化方法進行基準測試,以展示效能優勢。
- 真實世界的案例研究強調自動調整的實際價值。
- 遵循嚴格的安全性和隱私權標準來保護使用者資料。
使用者資料專門用來增強工作負載的效能,透過強固保護防止誤用或暴露敏感性資訊。