Azure Synapse Analytics (Preview) 中的 Apache Spark Advisor
Apache Spark 建議程式會分析 Spark 所執行的命令和程式碼,並顯示 Notebook 執行的即時建議。 Spark 建議程式具有內建模式,可協助使用者避免常見的錯誤、提供程式碼優化的建議、執行錯誤分析,以及找出失敗的根本原因。
內建建議
使用‘randomSplit’時可能會傳回不一致的結果
使用‘randomSplit’方法的結果時,可能會傳回不一致或不正確的結果。 使用 Apache Spark (RDD) 快取之後,再使用‘randomSplit’方法。
randomSplit () 方法相當於多次在資料框架上執行 sample (),每個範例都會重新擷取、分割和排序分割區內的資料框架。 跨分割區和排序次序的資料分佈針對 randomSplit () 和 sample () 皆非常重要。 若資料重新擷取時有何一者經過變更,分割之間可能會有重複值或遺漏值,而且使用相同的種子的相同樣本可能會產生不同結果。
這些不一致可能不會在每次執行時發生,但為了完全排除這些可能性,請快取您的資料框架、在資料行上重新分割,或套用 groupBy 等彙總函式。
資料表/檢視名稱已在使用中
與已建立資料表具有相同名稱的檢視已存在,或與已建立檢視具有相同名稱的資料表已存在。 當此名稱用於查詢或應用程式中時,不論第一個建立的檢視為何,只會傳回檢視。 若要避免衝突,請將資料表或檢視表重新命名。
無法辨識提示
選取的查詢包括無法辨識的提示。 確認該提示拼字正確。
spark.sql("SELECT /*+ unknownHint */ * FROM t1")
找不到指定的關聯名稱
找不到提示中已指定的關聯性。 請確認關聯性在提示範圍內正確地拼字並且可存取。
spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")
查詢中的提示可防止套用另一個提示
選取的查詢包含一個提示,並可防止其套用另一個提示。
spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")
啟用 ‘spark.advise.divisionExprConvertRule.enable’ 以減少進位錯誤傳播
此查詢包括具備 Double 類型的運算式。 建議您啟用組態 ‘spark.advise.divisionExprConvertRule.enable’,這有助於減少除法運算式,並減少進位錯誤傳播。
"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"
啟用‘spark.advise.nonEqJoinConvertRule.enable’以改善查詢效能
此查詢包含查詢內「Or」條件所造成的時間消耗聯結。 建議您啟用組態 ‘spark.advise.nonEqJoinConvertRule.enable’,這有助於將「Or」條件所觸發的聯結轉換為 SMJ 或 BHJ 以加速此查詢。
使用小型檔案壓縮優化差異資料表
此查詢位於具有許多小型檔案的差異資料表上。 若要改善查詢的效能,請在差異資料表上執行 OPTIMIZE 命令。 如需詳細資訊,請參閱 本文。
使用 ZOrder 優化 Delta 資料表
此查詢位於 Delta 資料表上,並包含高度選擇性篩選。 若要改善查詢的效能,請在差異資料表上執行 OPTIMIZE ZORDER BY 命令。 如需詳細資訊,請參閱 本文。
使用者體驗
Apache Spark 建議程式會顯示 Notebook 資料格輸出即時的建議,包括資訊、警告和錯誤。
Info
警告
錯誤
下一步
如需監視 Apache Spark 應用程式的詳細資訊,請參閱使用 Synapse Studio 監視 Apache Spark 應用程式一文。
如需建立筆記本的詳細資訊,請參閱 如何使用 Synapse 筆記本
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應