我们有一个1 GB的CSV文件,我们正在尝试加载到hive表中。首先,我们使用下面的配置单元查询将数据移动到临时表。此文件包含656列。
use ${hiveconf:database_name};
set table_name = table_name;
LOAD DATA LOCAL INPATH "${hiveconf:path}" OVERWRITE INTO TABLE ${hiveconf:table_name};
use ${hiveconf:database_name};
set table_name = table_name;
LOAD DATA LOCAL INPATH "${hiveconf:path}" OVERWRITE INTO TABLE ${hiveconf:table_name};
然后我们使用以下查询将数据从tmp表移动到临时表。
执行上述脚本时,我收到以下错误。use ${hiveconf:database_name};
SET mapred.job.queue.name=root.dev;
set hive.exec.max.dynamic.partitions.pernode = 500;
SET hive.variable.substitute.depth=100;
SET PATTERN='\\^';
SET REPLACEMENT='';
INSERT OVERWRITE TABLE STAGING_TABLE partition(FILE_NAME="${hiveconf:PARTITION_BY}")
SELECT
COLUMN1,
COLUMN2,
..
COLUMN656
FROM TEMP_TABLE;
use ${hiveconf:database_name};
SET mapred.job.queue.name=root.dev;
set hive.exec.max.dynamic.partitions.pernode = 500;
SET hive.variable.substitute.depth=100;
SET PATTERN='\\^';
SET REPLACEMENT='';
INSERT OVERWRITE TABLE STAGING_TABLE partition(FILE_NAME="${hiveconf:PARTITION_BY}")
SELECT
COLUMN1,
COLUMN2,
..
COLUMN656
FROM TEMP_TABLE;
如果文件大小小于300 MB,我们不会遇到上述查询的任何问题。如果文件大小超过300 mb,我们将收到GC限制问题。
当我们询问infra团队时,我们被告知要重写我们的查询。有人可以解释一下我们在上述查询中做错了什么吗?
先谢谢
答案 0 :(得分:0)