drop table
中的hive
命令还会删除分区吗?
我只是想知道这一点,还是我们必须使用alter table table_name drop partition()
命令?
答案 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 TABLE
和MANAGED
表的分区元数据,因为没有表就无法存在分区。但是对于EXTERNAL
表,它不会在文件系统中删除数据。
如果表为EXTERNAL
,则MANAGED
也会删除表,并在表位置中删除元数据和数据分区,所有表位置(包括分区子文件夹)。
如果表为DROP TABLE
,它将仅删除元数据和分区定义中的表定义,包含数据的表位置(包括所有分区文件夹)将保持不变,并且您可以再次在同一表顶部创建表位置和recover partitions。
同样适用于EXTERNAL
:如果表为DROP PARTITION
,它将删除分区元数据以及分区子文件夹。而且,如果表为MANAGED
,将保留带有数据的分区子文件夹,仅删除分区元数据。
因此,对于EXTERNAL
表,删除表或分区后无需删除数据。
有关更多详细信息,另请参见DROP TABLE和DROP PARTITION手册。