【发布时间】:2014-02-19 09:53:36
【问题描述】:
我有一张表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;
在不具体指定日期的情况下运行整个批次的 INSERT 是否缺少什么?
【问题讨论】: