hive外部表删除遇到的一个坑
操作步骤
- 创建某个表(
create external table xxx location xxx
) - 插入数据(
insert xxx select xxx from xxx
) - 删除表(
drop table xxx
) - 重新创建
- 插入数据
- 查询数据
现象
- 查询数据发现部分第一次插入的数据
- 查询数据量发现大于第二次插入的数量
原因
与其说是坑,不如说是自己忽略了一点:
- 插入的是外部表,当drop表之后,数据并没有删除
- 第二次创建表location指向的还是原来的位置
- 也就导致了上述的问题
所以,如果外表想重建并且指向原来的位置,需要注意不要忘记删掉原来位置的文件
注意:[创建外部表的初衷并不是为了删除它,这只是为了删除数据简单想的方式]
Hive中的外部表是比较安全的一种数据管理方式,有时也会误删
使用外部表有一个很好的好处,如果不小心将表误删了,只需要重新创建外部表然后使用下面的语句修复分区即可。
MSCK REPAIR TABLE table_name;
参考:
hive外部表删除遇到的一个坑_weixin_34248023的博客-博客
Hive外部表误删后的恢复_需求是无耻的-博客_hive 修复外部表
HIVE删除外部表_行走的IT-博客_hive删除外部表