我正在尝试使用动态分区将配置单元中的记录从一个表(未分区)插入到另一个表。我已经按照其他几个问题中的建议设置了这些配置单元属性:
hive.exec.dynamic.partition=True
hive.exec.dynamic.partition.pernode=5000
hive.exec.dynamic.partition.pernode=2048
hive.exec.dynamic.partition.mode=nonstrict
您可以在这里找到表定义以及我正在运行的插入查询:
非分区表
CREATE EXTERNAL TABLE IF NOT EXISTS dataretention.non_partitioned(
recordType STRING,
potentialDuplicate STRING,
...
partDate STRING,
partHour STRING,
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' LOCATION '/tmp/temp-tables/csv/not-partitioned'
分区表
CREATE TABLE IF NOT EXISTS dataretention.partitioned(
recordType STRING,
potentialDuplicate STRING,
...)
PARTITIONED BY (partDate STRING, partHour STRING) STORED AS ORC LOCATION '/tmp/temp-tables/partitioned'
插入查询
INSERT INTO dataretention.partitioned PARTITION(partDate, partHour) SELECT recordType, ... partDate, partHour FROM dataretention.non_partitioned;
文件有1000条记录长,表有158个字段。我首先在沙盒上使用hortonworkshdp2.4进行了测试。因为我在考虑一个资源问题,我已经转移到aws上的一个4机m4.xlarge(4核,每个16GB内存)集群。我无法检查沙盒上的9个不同分区,以及集群上的99个不同分区。我得到了一个顶点失败,从tez四次之后,它退出了工作。
任何帮助或建议都非常感谢。谢谢您。
暂无答案!
目前还没有任何答案,快来回答吧!