create table n_data(MARKET string,CATEGORY string,D map<string,string>,monthid int,value DOUBLE)
STORED AS ORC
;
我将数据加载到它(超过45000000行),看看蜂巢仓库
结果表由5个文件组成,大小为10MB-20MB,但dfs.block.size设置为128MB,存储小文件并不是最佳,因为它使用整个块!
如何设置128 MB的HIVE拆分文件?
编辑
插入查询:
insert into n_data
select tmp.market,tmp.category,d,adTable.monthid,tmp.factperiod[adTable.monthid] as fact
from (select market,category,d,factperiod,map_keys(factperiod) as month_arr from n_src where market is not null) as tmp
LATERAL VIEW explode(month_arr) adTable AS monthid
最佳答案 您必须为hive设置以下配置参数:
hive.merge.mapfiles = true
hive.merge.mapredfiles = true
hive.merge.tezfiles = true
hive.merge.smallfiles.avgsize = 16000000
我遇到了完全相同的问题,直到找到this source.您可以尝试使用“set”命令在hive会话中手动设置这些参数:
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.tezfiles=true;
set hive.merge.smallfiles.avgsize=16000000;
如果你只输入“set;”在配置单元会话控制台中,您可以检查上面提到的params是否设置正确.测试后,我建议您在hive-site.xml配置文件中或通过Ambari更改它们(如果您使用的是Hortonworks发行版).干杯!