1. 程式人生 > 實用技巧 >Spark SQL效能優化

Spark SQL效能優化

一.在記憶體中快取資料

Spark SQL可以通過呼叫spark.catalog.cacheTable(“tableName”)或使用dataFrame.cache()記憶體列式格式快取表。然後,Spark SQL將僅掃描所需的列,並將自動調整壓縮以最大程度地減少記憶體使用和GC壓力。可以呼叫spark.catalog.uncacheTable(“tableName”)從記憶體中刪除表或dataFrame.unCache()取消快取。

可以在SparkSession上使用setConf方法或使用SQL執行SET key=value 命令來完成記憶體中快取的配置。
在這裡插入圖片描述
中文翻譯
在這裡插入圖片描述
以下選項也可以用於調整查詢執行的效能。隨著自動執行更多優化,這些選項可能會在將來的版本中被棄用。

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

二.加入針對SQL查詢的策略提示

連線策略提示,即BROADCAST,MERGE,SHUFFLE_HASH和SHUFFLE_REPLICATE_NL,指導星火與其他關係結合時,他們使用暗示策略上的每個特定關係。例如,當BROADCAST在表’t1’上使用提示時,Spark將優先考慮以’t1’作為構建側的廣播聯接(廣播雜湊聯接或廣播巢狀迴圈聯接,取決於是否有任何等聯接鍵)。即使統計資訊建議的表’t1’的大小在配置之上spark.sql.autoBroadcastJoinThreshold。

當在連線的兩側指定了不同的連線策略提示時,Spark會優先於BROADCAST提示而不是MERGE提示優先 SHUFFLE_HASH於SHUFFLE_REPLICATE_NL 提示。當使用BROADCAST提示或SHUFFLE_HASH提示指定雙方時,Spark將根據聯接型別和關係的大小選擇構建方。

請注意,由於特定策略可能不支援所有聯接型別,因此不能保證Spark將選擇提示中指定的聯接策略。