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
默認爲開啓,若開啓以後系統就會自動推測分區字段的類型
關閉後能提高性能
相關文章
相關標籤/搜索