gpt4 book ai didi

hadoop - 无法对 Hive 中的庞大数据集应用动态分区

转载 作者:可可西里 更新时间:2023-11-01 14:13:57 33 4
gpt4 key购买 nike

我有一张 test_details 表,其中包含大约 400 万条记录。使用此表中的数据,我必须创建一个新的分区表 test_details_par,其中记录在 visit_date 上分区。创建表不是一个挑战,但是当我遇到必须使用动态分区插入数据的部分时,当我尝试插入更多天数的数据时,Hive 放弃了。如果我这样做了 2 或 3 天,Map Reduce 作业会成功运行,但在更多天后它会失败并给出 JAVA 堆空间错误GC 错误

我的 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 是否缺少任何内容?

最佳答案

尼尔斯,

Hive 12 及更低版本在动态分区方面存在众所周知的可扩展性问题,这些问题将在 Hive 13 中解决。问题是 Hive 试图为它写出的每个分区保持打开的文件句柄,这会导致内存不足和崩溃。 Hive 13 将按分区键排序,因此它一次只需要保存一个打开的文件。

我看到你有3个选项

  1. 将您的工作更改为一次只插入几个分区。
  2. 等待 Hive 13 发布并尝试(等待 2-3 个月)。
  3. 如果您知道如何从主干构建 Hive 并使用它来完成数据加载。

关于hadoop - 无法对 Hive 中的庞大数据集应用动态分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21876837/

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