这篇文章主要介绍 hive小文件如何合并,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
起因:
最近仓库里面新建了一张分区表,数据量大约是12亿行,分区比较多,从2008年7月开始 一天一个分区。
配置了一个任务
对这个表进行group by 的时候 发现启动了2800多个maps .
执行的时间也高大10分钟。
然后我在hdfs文件里面看到 这个表的每个分区里面都有20多个小文件,每个文件都不大 300KB--1MB
之前的hive的参数:
hive.merge.mapfiles=true
hive.merge.mapredfiles=false
hive.merge.rcfile.block.level=true
hive.merge.size.per.task=256000000
hive.merge.smallfiles.avgsize=16000000
hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
mapred.max.split.size=256000000
mapred.min.split.size=1
mapred.min.split.size.per.node=1
mapred.min.split.size.per.rack=1
hive.merge.mapredfiles 这个指的是 在Map-Reduce的任务结束时合并小文件
解决办法:
1.修改参数hive.merge.mapredfiles=true
2.通过map_reduece的办法生成一张新的表 此时生成的文件变成了每个分区一个文件
再次执行group by 发现效率得到了大大的提升。
以上是“ hive小文件如何合并”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。