Hive 在小部件上拆分 ORC 文件

Posted

技术标签:

【中文标题】Hive 在小部件上拆分 ORC 文件【英文标题】:Hive splits ORC files on small parts 【发布时间】:2015-07-09 12:24:32 【问题描述】:
create table n_data(MARKET string,CATEGORY string,D map<string,string>,monthid int,value  DOUBLE)
  STORED AS ORC
 ;

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

结果表由 5 个文件组成,大小为 10MB-20MB,但 dfs.block.size 设置为 128MB,存储小文件不是最佳选择,因为它使用了整个块!

如何将 HIVE 拆分文件设置为 128 MB?

编辑 插入查询:

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 设置相关的属性吗? @Ambrish 我在问题中添加了插入查询 @Ambrish 不,我没有其他与 hive 设置相关的内容 insert into 将在每次运行时创建新文件。因此,如果您批量运行您的工具,那么您将看到至少 BATCH_COUNT 个文件。 @Ambrish,我只运行插入,加载事实时,它不会在批处理模式下运行 【参考方案1】:

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

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

我遇到了完全相同的问题,直到找到this source。您可以尝试使用“set”命令在配置单元会话中手动设置这些参数,如下所示:

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

如果你只是输入“set;”在配置单元会话控制台中,您可以检查上述参数是否设置正确。测试后,我建议在您的 hive-site.xml 配置文件中或通过 Ambari 更改它们(如果您使用的是 Hortonworksdistribution)。干杯!

【讨论】:

以上是关于Hive 在小部件上拆分 ORC 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在小部件上连续点击一次并在小部件像钢琴一样触摸钢琴键时执行一些操作?

在小部件上插入临时图像[关闭]

如何使用 PyQt 在小部件上绘制点和线

Buildfire - 在小部件上保存图像

很想在小部件上隐藏此按钮?

Qt 如何从 QVector 中的数据创建位图并将其显示在小部件上?