Spark SQL項目中的優化思路


存儲格式的選擇:
 
采取行式還是列式存儲?
列存儲寫入時次數多,損耗時間多
反過來查詢的時候較快
 
 
壓縮格式的選擇:
 
考慮壓縮速度和壓縮文件的分割性
壓縮能夠較少存儲空間、提高數據傳輸速度
 
Spark中默認的壓縮格式是“snappy”
 
 
代碼的優化:
 
選擇的高性能的算子:
foreachPartition  => partitionOfRecords.foreach 獲得每一條數據
分區的好處是把partition所有的數據先保存到list當中去,然后我們在插入MySQL的時候就可以結合pstmt的批處理,一次過把整個分區數據寫進去 
 
復用已有的數據:
在項目中,如果同時實現多個功能(本例中就是有三個),在計算時觀察每個功能間是否有重疊產生的數據,若有的話把相應的數據提取出來生成,所有的功能實現都能共用(相當於做一個緩存,把中間數據cache )
 
 
參數的優化:
 
並行度:spark.sql.shuffle.partitions
默認的是200,配置的是partitions的數量,對應了task的數量
若覺得運行得太慢,則需要吧這個值調大
在conf里面改(YARN啟動時)
 
分區字段類型推測:spark.sql.sources.partitionColumnTypeInference.enabled
默認為開啟,若開啟之后系統就會自動推測分區字段的類型
關閉后能提升性能


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM