当表丢弃HIVE时,HDFS内存不会被删除

时间:2017-04-04 14:24:58

标签: azure hadoop hive hdfs ambari

嗨,我对HIVE和HDFS相对较新,如果我没有正确写出这一点,请提前道歉。 我使用Microsoft Azure来创建虚拟机。然后我使用putty和Ambari Sandbox登录。

在Ambari,我正在使用HIVE,一切正常,但我在内存分配方面存在重大问题。 当我在Hive中删除一个表时,我将进入我的“Hive View”并从垃圾文件夹中删除该表。然而,这在HDFS中没有释放任何内存。

该表现已从我的HIVE数据库和垃圾文件夹中删除,但没有释放内存。

是否有其他地方我应该从中删除表格?

提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试DESCRIBE FORMATTED <table_name>命令。它应该显示HDFS中文件的位置。检查此位置是否为空。

答案 1 :(得分:0)

根据你的描述,正如@DuduMarkovitz所说,我也不知道你说的HDFS memory是什么,但我想你想说的是HDFS上的表数据文件。

根据我的经验,我认为你在Hive中删除的表是一个外部表,而不是内部表。您可以从External Tables的Hive官方文档中获取以下功能。

  

外部表格   EXTERNAL关键字允许您创建表并提供LOCATION,以便Hive不使用此表的默认位置。如果您已经生成了数据,这会派上用场。 删除EXTERNAL表时,表中的数据不会从文件系统中删除。

内部表和外部表之间的区别,您可以参考here

因此,如果要在删除外部表后从HDFS回收外部表数据,则需要使用下面的命令将HDFS手动删除。

hadoop fs -rm -f -r <your-hdfs-path-url>/apps/hive/warehouse/<database name>/<table-name>

希望它有所帮助。