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

时间:2019-01-29 22:19:10

标签: java hadoop hive hiveql hive-table

我一直在尝试使用以下语句删除配置单元外部表

  

更改表$ tableName set tblproperties('EXTERNAL'='FALSE');

在我传递这些属性并执行

之后
  

DROP TABLE TABLENAME;

此命令还将删除其他配置单元表中的数据 数据库。

请有人建议我为什么这样做吗?也有什么办法 在这里我们只能删除一个没有提到的外部表 丢失其他数据。

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

1 个答案:

答案 0 :(得分:0)

在Hive中放置托管表时,其与数据文件的位置也会被删除。从技术上讲,可以在同一位置上创建许多表(包括托管表和外部表),请参见https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en。因此,这种情况很有可能。在相同位置创建的其他一些表也将被清空。实际上,Hive中的数据和表是松散连接的东西。 Hive中的Table是有关位置,架构,SerDe,统计信息,访问权限等的元存储信息。数据正在存储在HDFS / S3或其他兼容的文件系统中。您不仅可以使用Hive中的托管表,还可以使用其他方式删除数据或加载数据,例如hadoop fs -rm命令。