Hive: DROP TABLE IF EXISTS <Table Name> 不释放内存
Posted
技术标签:
【中文标题】Hive: DROP TABLE IF EXISTS <Table Name> 不释放内存【英文标题】:Hive: DROP TABLE IF EXISTS <Table Name> does not free memory 【发布时间】:2015-03-09 15:45:20 【问题描述】:当我在 hive 中使用 DROP TABLE IF EXISTS <Table Name>
时,它并没有释放内存。这些文件创建为0000_n.bz2
,它们仍在磁盘上。
我有两个问题:
1) 这些文件会随着每次插入而继续增长吗? 2) 是否有任何 DROP 等效于删除磁盘上的文件?
【问题讨论】:
【参考方案1】:你可以做的几件事:
检查表是否为外部表,在这种情况下,您需要在 HDFS 上手动删除文件,因为删除表不会删除文件: hadoop fs -rm /HDFS_location/文件名
其次检查您是否在正确的数据库中。您需要在删除表之前发出 use database 命令。数据库应与创建表的数据库相同。
【讨论】:
【参考方案2】:hive 中有两种类型的表。 Hive 托管表:如果您删除 Hive 托管表,HDFS 中的数据将被自动删除。
外部表:如果你删除一个外部表,hive 不会删除底层数据。
我相信你的是一个外部表。
【讨论】:
【参考方案3】:删除表如果存在 table_name purge;
此命令还会从垃圾文件夹中删除数据文件,并且在删除表后无法恢复
【讨论】:
以上是关于Hive: DROP TABLE IF EXISTS <Table Name> 不释放内存的主要内容,如果未能解决你的问题,请参考以下文章
Hive - Create Table&Drop Table & ALTER Table(上)
在 Hive CLI 上执行“alter table table_name drop partition(part_column < value)”时出现空指针错误
ALTER TABLE CREATE CONSTRAINT IF NOT EXIST 可能吗?
Hive Managed Table(内部表) 和 External Table(外部表)的区别