共用方式為


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 筆記本