Hive在小部件上拆分ORC文件

时间:2015-07-09 12:24:33

标签: hive hdfs

create table n_data(MARKET string,CATEGORY string,D map<string,string>,monthid int,value  DOUBLE)
  STORED AS ORC
 ;

我将数据加载到其中(超过45000000行),查看hive仓库

enter image description here

结果表包含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

1 个答案:

答案 0 :(得分:2)

您必须为hive设置以下配置参数:

hive.merge.mapfiles = true
hive.merge.mapredfiles = true
hive.merge.tezfiles = true
hive.merge.smallfiles.avgsize = 16000000

我遇到了完全相同的问题,直到找到this source。您可以尝试使用&#34; set&#34;在蜂巢会话中手动设置这些参数。像这样的命令:

set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.tezfiles=true;
set hive.merge.smallfiles.avgsize=16000000;

如果您只是输入&#34;设置;&#34;在配置单元会话控制台中,您可以检查上面提到的params是否设置正确。测试后,我建议您在hive-site.xml配置文件中或通过Ambari更改它们(如果您正在使用Hortonworks发行版)。干杯!