hive 小文件合併

Hive 支持在 MR 任務結束之後,再另起一輪 MR 作業進行小文件的合併。這輪作業只會有 mapper, 沒有 reducer. 每個 mapper 根據參數讀入若干文件並輸出成一個文件,從而達到文件合併的效果

 

與 mergefile 有關的參數有以下:

參數
說明
當前默認值
hive.merge.mapfiles 在只有 mapper 階段的任務結束後進行合併 true
hive.merge.mapredfiles 在有 reducer 階段的任務結束後進行合併 false
hive.merge.size.per.task 每個 task 最終輸出的文件大小 256M

hive.merge.smallfiles.avgsize

進行文件合併的條件。當任務執行完之後輸出的文件平均大小小於該參數,則 hive 會啓動文件合併任務 16M

如若需要開啓合併參數,只需要 set hive.merge.mapredfiles=true; 即可

 

注意:合併的任務是會算在 原作業 的 Stage 中的。比如,某個 SQL 生成的 MR 有 3 輪,則開啓合併參數後會變成 4 輪

合併文件這輪任務的開銷基本會在 10 分鐘之內完成。對於有嚴格 SLA 要求的 ETL 可以考慮是否開啓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章