hive性能调优

小文件处理

小文件过多的问题:

小文件过多会会导致占用过多的内存资源,因为namenode在内存中维护文件系统树和最新的元数据信息,每个小文件都会占用150字节的内存,会影响查询效率
导致小文件过多的原因:
          使用动态分区,会产生很多零碎的小文件,插入分区表时最好指定分区字段的值;
		  reduce过多会产生很多小文件,设置合理的reduce数

减少小文件数量的措施:
1 源头解决:在日增数据中,可以通过设置写入数据的参数,设置map端,reduce端输出时进行文件合并,设置一个输出文件大小均值,当小于这个均值时,会启动一个独立的mapreduce进程进行文件的合并
2 合并hdfs中已有的小文件,有两种方式:
    ①使用hive自带的concatenate工具进行小文件的合并,但是只能对rcFile和ORC格式存储的表,alter table tableName partition(col='xxx') concatenate;  只能针对分区使用
	②创建和原表相同结构的临时表,设置参数,将原表数据写入临时表,此时临时表的小文件就已经减少了,删除原表,然后直接将临时表改名即可,
	设置的参数为
     set mapred.max.split.size=25000000;
     set mapred.min.split.size.per.node=10000000;
     set hive.hadoop.supports.splittable.combineinputformat=true;
     set mapred.min.split.size.per.rack=10000000;
     set hive.exec.compress.output=true;
     set hive.merge.mapfiles=true;
     set hive.merge.mapredfiles=true;
     set hive.merge.size.per.task=256000000;
     set hive.merge.smallfiles.avgsize=16000000;
     set hive.input.format=org.apache.hadoop.hive.q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值