嗨,我对HIVE和HDFS相对较新,如果我没有正确写出这一点,请提前道歉。 我使用Microsoft Azure来创建虚拟机。然后我使用putty和Ambari Sandbox登录。
在Ambari,我正在使用HIVE,一切正常,但我在内存分配方面存在重大问题。 当我在Hive中删除一个表时,我将进入我的“Hive View”并从垃圾文件夹中删除该表。然而,这在HDFS中没有释放任何内存。
该表现已从我的HIVE数据库和垃圾文件夹中删除,但没有释放内存。
是否有其他地方我应该从中删除表格?
提前致谢。
答案 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>
希望它有所帮助。