我正在尝试将数据从一个有1列分区的表加载到一个有2列分区的新表中,新的分区列是第一个表中的常规列。
例如,create table语句(为便于理解而简化和更改):
CREATE EXTERNAL TABLE `house`(
`color` string,
`size` string,
`owner` string)
PARTITIONED BY (
`dt` date)
CREATE EXTERNAL TABLE `house_new`(
`size` string,
`owner` string)
PARTITIONED BY (
`dt` date, `color` string)
我有一个简单的insert查询,如下所示:
INSERT OVERWRITE TABLE `house_new` PARTITION (`dt`='2018-06-10’, `color`)
SELECT
`size`,
`owner`,
`color`
FROM house
WHERE `dt`='2018-06-10';
所以它一直在运行,并表示作业在终端和tez ui中都成功完成了。即使在整个过程中,我也可以看到文件实际上被填充在s3上的tmp/staging文件夹中,其中包含所有正确的分区。但是,当它最终完成时,实际上没有文件被写入,所有临时文件都被删除。
对分区进行硬编码(静态分区)是可行的,从一个1分区列表到另一个1分区列表的动态分区也是可行的。从一个1分区的列表出发,尝试从第一个表派生第二个分区是行不通的。
暂无答案!
目前还没有任何答案,快来回答吧!