SparkSQL性能优化
SparkSQL性能優化
1、設置shuffle過程中的并行度,可以通過spark.sql.shuffle.partitions設置shuffle并行度。(在SQLContext.setConf()中設置)。
2、Hive數據倉庫創建的時候,合理設置數據類型,比如設置成Int的就不需要設置成BIGINT,減少數據類型的不必要開銷。
3、SQL語句的優化,盡量給出明確的列,比如select name from table 不建議使用 select * from table.
4、并行的處理查詢結果,對于SparkSQL查詢的結果,如果數據量比較大,比如超過1000條,那么久不要使用collect到driver在處理,使用foreach算法并行處開立查詢結果。
5、緩存表。 對于一條SQL語句中可能多次使用到的表,可以對其進行緩存,使用SQLContext.cacheTable(TableName)或者DataFrame.cache即可,SparkSQL會用內存列存儲的格式進行表的緩存,然后SparkSQL就可以僅僅掃描需要使用的列,并且自動優化壓縮,來最小化內存的使用和GC的開銷,SQLContext.uncacheTable(tableName)可以將表從緩存中移除,使用SQLContext.setConf()設置,可以通過spark.sql.inMemoryColumnarStorage.batchSize這個參數,默認10000,配置列存儲單位。
6、廣播JOIN表,spark.sql.autoBroadcastJoinThreshold,默認10485760(10M),在內存夠用的情況下,增大其大小,可以將join中的較小的表廣播出去,而不用進行網絡數據傳輸。
7、鎢絲計劃,spark.sql.tungsten.enabled。默認是true,自動管理內存。
8、最有效的方法為:并行的處理查詢結果,緩存表,廣播join表!
總結
以上是生活随笔為你收集整理的SparkSQL性能优化的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 乙醚的制备方法 乙醚的制备步骤介绍
- 下一篇: 蒸花卷多长时间熟 蒸花卷需要的时间
