当我从 Hive 交互式命令行删除托管表时,在 /user/hive/warehouse/<databasename>.db
中的 hdfs 上创建的基础文件仍然存在。当我重新创建具有相同名称的表并尝试执行此操作时,这会导致问题
INSERT INTO TABLE
因为它仍然包含我在最初运行时加载到这些分区(在我的例子中是 dt 和 hr 分区)的数据。只有当我使用
INSERT OVERWRITE TABLE
它最终会正确加载数据吗,但我的 ETL 需要使用 INSERT INTO TABLE
.
有什么想法吗?我正准备创建同一个表但名称不同,或者只是进入并删除 hdfs 上的内容,但我担心这是否会破坏 Metastore 或其他东西。最后,我确信它是一个托管表而不是外部表。
最佳答案
有时,Hive 会删除表元数据,但不会默默地将文件移至回收站。你检查过/user/<user>/.Trash
的权限了吗? ?确保 ETL 用户对此文件夹具有适当的权限。
关于hadoop - 删除托管(非外部)表时,不会删除 hdfs 上的配置单元文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114597/