java—将同一数据库中的配置单元外部表更改为内部表也会从另一个表中删除数据

ffdz8vbo  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(396)

我一直在尝试使用以下语句删除配置单元外部表
alter table$tablename set tblproperties('external'='false');
在我通过这些属性并做一个
删除表tablename;
此命令还会从该数据库中的其他配置单元表中删除数据。
有人能告诉我为什么要这样做吗?另外,如果有任何方法,我们只能删除其中提到的一个外部表,而不丢失其他数据。

ALTER TABLE TABLENAME set tblproperties('EXTERNAL' = 'FALSE');
 drop table tablename;
iih3973s

iih3973s1#

当您在配置单元中删除托管表时,它与数据文件的位置也会被删除。从技术上讲,可以在同一个位置上创建多个表,包括托管表和外部表,看到这个答案了吗,这样的场景是完全可能的。使用相同位置创建的其他一些表也将被清空。实际上,hive中的数据和表是松散连接的。配置单元中的表是一个元存储区,它存储有关位置、模式、serde、统计信息、访问权限等的信息,数据存储在hdfs/s3或其他兼容的文件系统中。您可以使用其他方法删除数据或加载数据,如 hadoop fs -rm 命令,而不仅仅是配置单元中的托管表。

相关问题