我一直在尝试使用以下语句删除配置单元外部表
alter table$tablename set tblproperties('external'='false');
在我通过这些属性并做一个
删除表tablename;
此命令还会从该数据库中的其他配置单元表中删除数据。
有人能告诉我为什么要这样做吗?另外,如果有任何方法,我们只能删除其中提到的一个外部表,而不丢失其他数据。
ALTER TABLE TABLENAME set tblproperties('EXTERNAL' = 'FALSE');
drop table tablename;
1条答案
按热度按时间iih3973s1#
当您在配置单元中删除托管表时,它与数据文件的位置也会被删除。从技术上讲,可以在同一个位置上创建多个表,包括托管表和外部表,看到这个答案了吗,这样的场景是完全可能的。使用相同位置创建的其他一些表也将被清空。实际上,hive中的数据和表是松散连接的。配置单元中的表是一个元存储区,它存储有关位置、模式、serde、统计信息、访问权限等的信息,数据存储在hdfs/s3或其他兼容的文件系统中。您可以使用其他方法删除数据或加载数据,如
hadoop fs -rm
命令,而不仅仅是配置单元中的托管表。