Hive:无法将数据从未分区表复制到分区表

Posted

技术标签:

【中文标题】Hive:无法将数据从未分区表复制到分区表【英文标题】:Hive : Cannot copy data from unpartitioned table to partitioned table 【发布时间】:2018-10-01 20:39:58 【问题描述】:

我有一个未分区的表

create table tabUn 
(
    col1 string,
    col2 int
)

假设它有一些数据。接下来我创建了一个分区表

CREATE EXTERNAL TABLE tabPart 
(
    col1 string,
    col2 int
)
PARTITIONED BY (col_date string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/path/to/table';

最后,我尝试将数据复制过来

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
INSERT OVERWRITE TABLE tabPart PARTITION(data_date='2018-10-01')
SELECT 
(
    col1,
    col2,
    '2018-10-01' as col_date
) select * FROM tabUn;

但我收到以下错误

失败:NullPointerException null

我做错了什么?

【问题讨论】:

【参考方案1】:

您的选择语句似乎不正确。

INSERT OVERWRITE TABLE tabPart PARTITION (data_date='2018-10-01')
SELECT col1,col2,'2018-10-01' as col_date from tabUn;

【讨论】:

以上是关于Hive:无法将数据从未分区表复制到分区表的主要内容,如果未能解决你的问题,请参考以下文章

数据流作业:无法将列分区表复制到列分区元表:不支持

Hive:分区表表结构和数据复制

Hive 复制分区表和数据

Hive中如何快速的复制一张分区表(包括数据)

diskgen复制硬盘分区及数据

如何将分区表复制到 BigQuery 中的另一个分区表