hive小文件问题
1.问题背景:流量表数据添加字段解析,需要对数据进行重跑,就是进行 insert overwrite ,hive的引擎是 tez。不过插入后发现查询特别的慢,经排查发现是由于重新插入数据导致了很多小文件,从而导致数据查询特别慢。
2.问题解决:可以添加参数进行小文件合并
#动态分区 SET hive.exec.dynamic.partition=true; SET hive.exec.dynamic.partition.mode=nonstrict; SET hive.exec.max.dynamic.partitions.pernode = 10000; SET hive.exec.max.dynamic.partitions=10000; #在mr下 set hive.execution.engine=mr; --设置引擎 -- 在map-only job后合并文件,默认true set hive.merge.mapfiles = true; -- 在map-reduce job后合并文件,默认false set hive.merge.mapredfiles = true; -- 合并后每个文件的大小,默认256000000 set hive.merge.size.per.task = 256000000; --256M -- 平均文件大小,是决定是否执行合并操作的阈值,默认16000000 set hive.merge.smallfiles.avgsize = 256000000; --256M #在tez下 set hive.merge.tezfiles=true; --增加这个参数
https://www.bbsmax.com/A/pRdBxLBeJn/