insert overwrite是否删除配置单元中的数据和分区?

7uhlpewt  于 2021-06-27  发布在  Hive
关注(0)|答案(2)|浏览(1282)

我正在创建一个年和月的分区。假设目标配置单元表中存在的上一个分区是 year = 2018 and month = 10 and month = 11 . 现在有新的数据出现了 year = 2018 and month = 11 只是。所以我的问题是将插入覆盖删除的数据和分区 month = 10 ? 请建议我一个解决方案,因为我想删除的数据和分区 month = 10 我也是。谢谢

xytpbqjk

xytpbqjk1#

当配置单元尝试“插入覆盖”到现有目录下的外部表的分区时,根据分区定义是否已存在于元存储中,配置单元的行为将有所不同:
a) 如果分区定义不存在,它将不会尝试猜测目标分区目录在哪里(静态分区或动态分区),因此它将无法删除那些将被写入的分区下的现有文件
b) 如果分区定义确实存在,它将尝试删除目标分区目录下的所有文件,然后再将新数据写入这些目录。
简而言之,在您的情况下,它不会删除数据。

prdp8dxp

prdp8dxp2#

如果要删除所有现有分区并只保留新的月份数据,可以使用 DROP PARTITION 命令与比较器。
例如:如果2018年和第10个月及之前有分区。您可以使用其中一个进行配置

// If there is always only one partition
 alter table part_t drop partition (year=2003,month=1);

// If there are multiple partitions, you can use < comparator
 alter table part_t drop partition (year <2003,month<1);

相关问题