gpt4 book ai didi

Hive 将 ORC 文件分割成小部分

转载 作者:行者123 更新时间:2023-12-02 16:44:58 25 4
gpt4 key购买 nike

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,存储小文件不是最佳选择,因为它使用了整个 block !

如何设置 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 设置以下配置参数:

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

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

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

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

关于Hive 将 ORC 文件分割成小部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31317434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com