Hadoop 我们如何删除一个配置单元表及其底层文件结构,而不损坏同一路径下的另一个表?

Hadoop 我们如何删除一个配置单元表及其底层文件结构,而不损坏同一路径下的另一个表?,hadoop,hive,hdfs,hive-partitions,Hadoop,Hive,Hdfs,Hive Partitions,假设在同一HDFS文件路径下创建了两个配置单元表 我希望能够删除具有HDFS文件路径的表,而不会损坏同一共享路径中的其他表 通过执行以下操作: drop table test; 然后: 我删除了两个表文件,而不仅仅是我删除的那个 在另一篇帖子中,我发现了这个解决方案: --changing the tbl properties to to make the table as internal ALTER TABLE <table-name> SET TBLPROPERTIES('E

假设在同一HDFS文件路径下创建了两个配置单元表

我希望能够删除具有HDFS文件路径的表,而不会损坏同一共享路径中的其他表

通过执行以下操作:

drop table test;
然后:

我删除了两个表文件,而不仅仅是我删除的那个

在另一篇帖子中,我发现了这个解决方案:

--changing the tbl properties to to make the table as internal
ALTER TABLE <table-name> SET TBLPROPERTIES('EXTERNAL'='False'); 
--now the table is internal if you drop the table data will be dropped automatically
drop table <table-name>; 
--将tbl属性更改为使表成为内部表
ALTER TABLE SET TBLPROPERTYS('EXTERNAL'='False');
--现在,表是内部的,如果您删除,表数据将自动删除
升降台;
但我无法通过ALTER语句,因为我遇到了一个权限被拒绝的错误(用户对表没有[ALTER]权限)


任何其他解决方案?

如果有两个表使用同一位置,则此位置中的所有文件都属于这两个表,而不管它们是如何创建的

假设您的
table1
位置
hdfs/file/path/folder
table2
位置相同
hdfs/file/path/folder
,并且您在
table1
中插入了一些数据,则会创建文件,如果您从
table2
中选择,则会读取这些文件,反之亦然:如果插入到
表2
,则可以从
表1
访问新文件。这是因为表数据存储在该位置,而不管您如何将文件放入该位置。您可以使用SQL将数据插入表中,手动将文件放入位置,等等

每个表或分区都有其位置,不能单独指定文件

为了更好地理解,请阅读此答案,并举例说明同一位置上的多个表格:

--changing the tbl properties to to make the table as internal
ALTER TABLE <table-name> SET TBLPROPERTIES('EXTERNAL'='False'); 
--now the table is internal if you drop the table data will be dropped automatically
drop table <table-name>;