2

当我DROP TABLE IF EXISTS <Table Name>在蜂巢中使用时,它不会释放内存。这些文件被创建为0000_n.bz2并且它们仍然在磁盘上。

我在这里有两个问题:

1)这些文件会随着每次插入而继续增长吗?2) 是否有任何 DROP 等效于删除磁盘上的文件?


如何使用 Lamba 表达式使 Kotlin 中的 Java 方法调用不那么冗长?

下面的函数可以用 Lambda 表达式不那么冗长吗?我怎样才能把它修剪下来?它正在调用FilenameFilter.accept()Java方法。

val files = File(SECTIONS_DIR).listFiles(object : FilenameFilter {
            override fun accept(dir: File?, filename: String): Boolean {
                if (filename.matches(regex))
                    return true
                else
                    return false
            }
        })
4

3 回答 3

8

Hive 中有两种类型的表。Hive 管理表:如果你删除一个 Hive 管理表,HDFS 中的数据会被自动删除。

外部表:如果您删除外部表,hive 不会删除基础数据。

我相信你的是一个外部表。

于 2015-03-09T15:55:39.380 回答
8

你可以做几件事:

  • 检查表是否为外部表,在这种情况下,您需要在 HDFS 上手动删除文件,因为删除表不会删除文件: hadoop fs -rm /HDFS_location/filename

  • 其次检查您是否在正确的数据库中。您需要在删除表之前发出 use database 命令。数据库应与创建表的数据库相同。

于 2015-03-09T15:57:09.793 回答
0

如果存在 table_name purge,则删除表;

此命令还将从垃圾文件夹中删除数据文件,并且在删除表后无法恢复

于 2020-06-24T04:39:06.283 回答