我有一张test_details
包含大约400万条记录的表格.使用此表中的数据,我必须创建一个分区test_details_par
记录的新分区表visit_date
.创建表并不是一个挑战,但是当我来到我必须使用动态分区来插入数据的部分时,当我尝试插入数据更多天时,Hive放弃了.如果我这样做2或3天,Map Reduce作业会成功运行,但是在更多天内它没有给出一个JAVA Heap Space Error
或者GC Error
.
我的DDL的简化快照如下:
CREATE TABLE test_details_par( visit_id INT, visit_date DATE, store_id SMALLINT);
INSERT INTO TABLE test_details_par PARTITION(visit_date) SELECT visit_id, store_id, visit_date FROM test_details DISTRIBUTE BY visit_date;
我尝试设置这些参数,以便Hive以更好的方式执行我的工作:
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partition=true;
set hive.exec.max.dynamic.partitions.pernode = 10000;
Run Code Online (Sandbox Code Playgroud)
有没有什么我缺少运行INSERT完整批处理而没有具体指定日期?
小智 6
尼尔斯,
Hive 12及以下版本具有动态分区的众所周知的可伸缩性问题,将通过Hive 13解决.问题是Hive尝试为其写出的每个分区保持文件句柄打开,这会导致内存不足和崩溃.Hive 13将按分区键排序,因此它只需要一次打开一个文件.
我看到你有3个选项
归档时间: |
|
查看次数: |
3816 次 |
最近记录: |