簡體   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