【问题标题】:changing hive external table to internal table in the same database also drops the data from the another table将 hive 外部表更改为同一数据库中的内部表也会从另一个表中删除数据
【发布时间】:2019-01-29 22:19:10
【问题描述】:

我一直在尝试使用语句删除 hive 外部表

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

在我通过这些属性并做一个

删除表表名;

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

请任何人都可以建议我为什么这样做?如果有什么办法 我们只能删除一个没有提到的外部表 丢失其他数据。

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

【问题讨论】:

  • 如果有其他表的位置指向同一位置,这是可能的。
  • 是的,我想通了,但感谢您确认感谢 leftjoin
  • 请通过测试查看此答案:stackoverflow.com/a/54038932/2700344
  • 帮了我很多,再次感谢老兄。

标签: java hadoop hive hiveql hive-table


【解决方案1】:

当您在 Hive 中删除托管表时,其包含数据文件的位置也会被删除。并且在技术上可以在同一位置创建许多表,包括托管表和外部表,请参见answer 所以,这种情况是很有可能的。使用相同位置创建的其他一些表也将被清空。实际上,Hive 中的数据和表是松散连接的东西。 Hive 中的表是关于位置、模式、SerDe、统计信息、访问权限等的元存储信息。数据存储在 HDFS/S3 或其他兼容的文件系统中。您可以使用其他一些方法来删除数据或加载数据,例如hadoop fs -rm 命令,而不仅仅是 Hive 中的托管表。

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 2018-08-30
    • 2018-05-18
    • 2017-04-07
    • 1970-01-01
    • 2016-11-14
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多