当我从Hive交互式命令行中删除托管表时,在/user/hive/warehouse/<databasename>.db
中的hdfs上创建的基础文件仍然存在。当我重新创建具有相同名称的表并尝试执行
INSERT INTO TABLE
因为它仍然包含我在初始转载时加载到这些分区(在我的情况下为dt和hr分区)中的数据。只有我使用
INSERT OVERWRITE TABLE
然后它会最终正确加载数据,但我的ETL需要使用INSERT INTO TABLE
。
有什么想法吗?我准备创建相同的表,但使用不同的名称,或者只是进入并删除hdfs上的内容,但我担心这是否会破坏Metastore或其他东西。最后,我很肯定它是一个托管表而不是外部表。
答案 0 :(得分:2)
有时Hive会删除表元数据,但是无法将文件移动到废纸篓。您是否检查了/user/<user>/.Trash
的权限?确保ETL用户具有此文件夹的适当权限。