我一直在尝试使用语句删除配置单元外部表
alter table $tableName set tblproperties('EXTERNAL' = 'FALSE');
在我传递这些属性并执行
DROP TABLE TABLENAME;
此命令还会从该目录中的其他配置单元表中删除数据 数据库。
谁能告诉我为什么要这样做?还有如果有什么办法 我们只能删除一个没有提到的外部表 丢失其他数据。
ALTER TABLE TABLENAME set tblproperties('EXTERNAL' = 'FALSE');
drop table tablename;
最佳答案
当您在 Hive 中删除托管表时,它与数据文件的位置也会被删除。从技术上讲,可以在同一位置创建许多表,包括托管表和外部表,请参阅 answer所以,这样的场景是很有可能的。使用相同位置创建的其他一些表也将被清空。实际上,Hive 中的数据和表是松散连接的东西。 Hive 中的表是关于位置、模式、SerDe、统计信息、访问权限等的元存储信息。数据存储在 HDFS/S3 或其他兼容的文件系统中。您可以使用一些其他方式来删除数据或加载数据,例如 hadoop fs -rm
命令,而不仅仅是 Hive 中的托管表。
关于java - 将配置单元外部表更改为同一数据库中的内部表也会删除另一个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54430494/