hive、spark優化
hive、spark優化
看了文章https://blog.csdn.net/qq_26442553/article/details/99438121,總結了的。感謝@滌生大大的精彩分享
小檔案過多
小檔案過多引起maptask太多,初始化時間遠大於邏輯處理時間。此時我們可以合併小檔案。
- hive,調節引數:
set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; --hive0.5開始就是預設值,執行map前進行小檔案合併
----------------------------------------------------------------------
set mapred.max.split.size=256000000
set mapred.min.split.size=10000000
set mapred.min.split.size.per.node=8000000 --每個節點處理的最小split
set mapred.min.split.size.per.rack=8000000 --每個機架處理的最小slit.
------------------------------------------------------------------------
注意一般來說這四個引數的配置結果大小要滿足如下關係。
max.split.size >= min.split.size >= min.size.per.node >= min.size.per.node
注意,
1.調節上面四個引數控制map端任務個數時,如果檔案未使用壓縮,或者壓縮格式不支援split,那麼在檔案較大的情況下想要通過調節引數增加map數是無效的。
2.如果是可切分的壓縮格式,則需要上面?四個引數一起,進行精準控制調優。
- spark 。
spark 可以通過/repartition(n)/,根據實際情況,對最終結果進行repartion進而達到控制最終落到hdfs的檔案數的目的
資料傾斜
1.join傾斜
-
小表join大表
將小表寫在前面,通過/*map join */舍掉reduce操作,沒有reduce操作就不會有資料傾斜。並且map join的原理是將小表載入到每一個map節點上與大表進行關聯,所以對小表 join大表的笛卡爾積的情況,也十分有效。 -
大表join大表
- null值引起的資料傾斜。
預先過濾null值,或者將null處理成非關聯值的隨機值。 - 非null的熱點值引起的傾斜
將熱點值和非熱點值分開進行計算,最終合併到一起, - sql層面處理。
1、 儘量避免distinct 用group by代替
2、 儘可能的裁剪列和分割槽,縮小資料集
3、 關聯key 的欄位型別保持一致。
4、distribute by ()sort by 代替partition by () order by() 因為。orderby是全域性排序,只會起一個reduce任務,所以會很慢。 - 引數調節
1、設定每個reduce可處理的資料量大小
set hive.exec.reducers.bytes.per.reducer = 1000000000
2、控制傾斜的閾值
ihve 在執行的時候沒有辦法判斷哪個key 會產生多大的傾斜,所以使用這個引數控制傾斜的閾值,如果超過這個值,新的值會傳送給那些還沒有達到的reduce, 一般可以設定成你處理的總記錄數/reduce個數的2-4倍都可以接受.set hive.optimize.skewjoin = true; set hive.skewjoin.key = skew_key_threshold (default = 100000)
- null值引起的資料傾斜。
3.group by 傾斜
首先配置允許在map端進行聚合,然後同樣調節傾斜的閾值。
hive.map.aggr=true (預設true) 這個配置項代表是否在map端進行聚合,相當於Combiner
hive.groupby.skewindata=true(預設false)
相關文章
- Hive --------- hive 的優化Hive優化
- [Hive]Hive排序優化Hive排序優化
- spark with hiveSparkHive
- hive的優化Hive優化
- hive on spark配置HiveSpark
- Spark整合hiveSparkHive
- Spark效能優化Spark優化
- Hive高階優化Hive優化
- hive優化-資料傾斜優化Hive優化
- Hive on Spark和Spark sql on Hive,你能分的清楚麼HiveSparkSQL
- Hive on Spark 和 Spark sql on Hive,你能分的清楚麼HiveSparkSQL
- spark效能優化(一)Spark優化
- spark2.2.0 配置spark sql 操作hiveSparkSQLHive
- Spark效能優化:優化資料結構Spark優化資料結構
- Spark(十三) Spark效能調優之RDD持久化Spark持久化
- Hive優化相關設定Hive優化
- Hive企業級效能優化Hive優化
- [Hive]Hive中表連線的優化,加快查詢速度Hive優化
- spark寫入hive資料SparkHive
- Spark操作Hive分割槽表SparkHive
- hive on spark記憶體模型HiveSpark記憶體模型
- Hive和Spark分割槽策略HiveSpark
- Spark 3.x Spark Core詳解 & 效能優化Spark優化
- Hive使用Calcite CBO優化流程及SQL優化實戰Hive優化SQL
- spark效能優化幾點注意Spark優化
- Flume+Spark+Hive+Spark SQL離線分析系統SparkHiveSQL
- Apache Spark和Hive有用的功能ApacheSparkHive
- hive on spark執行速度慢HiveSpark
- Spark效能優化:對RDD持久化或CheckPoint操作Spark優化持久化
- 【Hive】資料傾斜優化 shuffle, join, group byHive優化
- spark相關介紹-提取hive表(一)SparkHive
- Hive 優缺點Hive
- Hive的壓縮儲存和簡單優化Hive優化
- Hive常用效能優化方法實踐全面總結Hive優化
- Spark效能優化:提高並行度、使用reduceByKeySpark優化並行
- hive on spark:return code 30041 Failed to create Spark client for Spark session原因分析及解決方案探尋HiveSparkAIclientSession
- Spark效能優化:診斷記憶體的消耗Spark優化記憶體
- Spark優化之小檔案是否需要合併?Spark優化