繁体   English   中英

Tez上的Hive 0.14:即使使用hive.merge,每个插入也可以包含一个文件。 活性

[英]Hive 0.14 on Tez : one file per insert, even with hive.merge. activated

每隔15分钟,我需要将数据插入存储为ORC的不同表中并汇总值。 那些INSERT使用动态分区。 每个INSERT都会在分区中创建一个新文件,这会减慢聚合查询的速度。 我在网上搜索,发现了与此案有关的一些主题

所以我在hive-site.xml上添加了这些设置:

hive.merge.mapfiles =true;
hive.merge.mapredfiles =true;
hive.merge.tezfiles = true
hive.merge.smallfiles.avgsize=256000000;

但是即使有这些设置,每个插入也会在每个分区上创建一个新文件,并且文件不会合并。

有人对我如何解决此问题有想法吗?

我的群集是Azure HDInsight群集3.2,具有Hive 0.14,Tez 0.5.2。 我的插入查询是这样的:

INSERT INTO TABLE measures PARTITION(year, month, day)
SELECT  area,
    device,
    date,
    val,
    year,
    month,
    day
FROM stagingmeasures
DISTRIBUTE BY year, month, day;

提前致谢

为目标表创建一个交换表(如下所示),以便将所有小文件合并为一个文件。 删除原始表,然后将交换表重命名为原始表。

每天执行一次。

CREATE TABLE swap_measures SELECT * FROM measures;
DROP TABLE measures;
ALTER TABLE swap_measures RENAME TO measures;

如果您的目标是使用ORC格式直接流式传输到Hive,请查看下面的链接以了解有关Hive流式API的更多信息

https://cwiki.apache.org/confluence/display/Hive/Streaming+Data+Ingest

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM