hive 合并小文件处理方案 -转载

本文介绍了在Hadoop和Hive环境下处理小文件问题的两种策略。首先,通过设置`hive.input.format`为`CombineHiveInputFormat`以及调整split大小,在Map阶段合并小文件以减少Map数量。其次,通过开启`hive.merge.mapredfiles`,在MR作业结束后合并小文件。实验证明,这些方法在rcfile和orc文件格式中效果更佳,对于12亿行数据的分区表,优化后执行效率显著提高,强调了正确处理Hive小文件对提升任务执行效率的重要性。
摘要由CSDN通过智能技术生成

hadoop使用lzo压缩,block块大小为512MB

环境:hadoop2.6+hive1.2.1     lzo压缩


启动压缩
set hive.exec.compress.output=true;
set mapreduce.output.fileoutputformat.compress=true; 
1、减少map数,(当有大量小文件时,启动合并)
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
set mapreduce.input.fileinputformat.split.maxsize=1073741824;
set mapreduce.input.fileinputformat.split.minsize=1;
set mapreduce.input.fileinputformat.split.minsize.per.node=536870912;
set mapreduce.input.fileinputformat.split.minsize.per.rack=536870912;
经过测试,这种设置可以在map阶段和并小文件,减少map的数量。
注意:在测试的时候,如果文件格式为Textfile,并且启用lzo压缩,不能生效。 rcfile以及orc可以生效,Textfile不启用lzo压缩也可以生效。如果是新集群的话,没有历史遗留的问题的话,建议hive都使用orc文件格式,以及启用lzo压缩。


2、MR作业结束后,判断生成文件的平均大小,如果小于阀值,就再启动一个job来合并文件
set hive.m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值