配置单元中带有partitions列的drop table命令

时间:2018-10-08 06:34:46

标签: hive

drop table中的hive命令还会删除分区吗?

我只是想知道这一点,还是我们必须使用alter table table_name drop partition()命令?

1 个答案:

答案 0 :(得分:0)

let decoder = JSONDecoder() decoder.dateDecodingStrategy = .custom{ let container = try $0.singleValueContainer() let dateStr = try container.decode(String.self) let formatter = DateFormatter() formatter.calendar = Calendar(identifier: .gregorian) formatter.locale = .current // *** SWITCH-CASE: START *** switch dateStr.utf8.count { case 20: formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" case 22: formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SZ" case 23: formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSZ" case 24: formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" default: formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" } // *** SWITCH-CASE: END *** formatter.timeZone = TimeZone(secondsFromGMT: 0) return formatter.date(from: dateStr)! } 语句始终删除DROP TABLEMANAGED表的分区元数据,因为没有表就无法存在分区。但是对于EXTERNAL表,它不会在文件系统中删除数据。

如果表为EXTERNAL,则MANAGED也会删除表,并在表位置中删除元数据和数据分区,所有表位置(包括分区子文件夹)。

如果表为DROP TABLE,它将仅删除元数据和分区定义中的表定义,包含数据的表位置(包括所有分区文件夹)将保持不变,并且您可以再次在同一表顶部创建表位置和recover partitions

同样适用于EXTERNAL:如果表为DROP PARTITION,它将删除分区元数据以及分区子文件夹。而且,如果表为MANAGED,将保留带有数据的分区子文件夹,仅删除分区元数据。

因此,对于EXTERNAL表,删除表或分区后无需删除数据。

有关更多详细信息,另请参见DROP TABLEDROP PARTITION手册。