我正在尝试将具有 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 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 个分区的列表开始并尝试从第一个表派生第二个分区是行不通的。