2021-11-14

hive 4.0.0 DDL

删除表

DROP TABLE [IF EXISTS] table_name [PURGE];     -- (Note: PURGE available in Hive 0.14.0 and later)
DROP TABLE会删除此表的元数据和数据。如果配置了Trash(并且没有指定PURGE),数据实际上会被移动到.Trash/Current目录。元数据完全丢失。

当删除一个外部表(用EXTERNAL修饰的表)时,表中的数据不会从文件系统中删除。启动Hive 4.0.0 (被HiveStrictManagedMigration工具转换为外部表的管理表应该被设置为在表被删除时删除数据)把参数external.table.purge设置为true,,也将删除数据。

当删除视图引用的表时,不会给出警告(视图将作为无效视图悬空,必须由用户删除或重新创建)。

删除视图引用的表时,不会有警告(视图会无效而悬空,必须由用户删除或重新创建)。

此外,表信息将会从 Metastore 中删除,原始数据将被删除,就像通过 'hadoop dfs -rm' 一样。 在许多情况下,这会导致表数据被移动到用户主目录中的 .Trash 文件夹中; 因此,误删除表的用户可以通过重新创建具有相同架构的表、重新创建所有必要的分区,然后使用 Hadoop 手动将数据移回原位来恢复丢失的数据。 此解决方案可能会随着时间或跨安装而更改,因为它依赖于底层实现; 强烈建议用户不要随意删除表。

如果指定了 PURGE,则表数据不会进入 .Trash/Current 目录,因此在发生错误的 DROP 时无法检索。 也可以使用表属性 auto.purge 指定清除选项。 

在 Hive 0.7.0 或更高版本中,如果表不存在,DROP 会返回错误,除非指定了 IF EXISTS 或配置变量 hive.exec.drop.ignorenonexistent 设置为 true。

删除表分区

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec[, PARTITION partition_spec, ...]
  [IGNORE PROTECTION] [PURGE];            -- (Note: PURGE available in Hive 1.2.0 and later, IGNORE PROTECTION not available 2.0.0 and later)
可以使用ALTER TABLE table_name DROP PARTITION删除表的分区。这将删除该分区的数据和元数据。如果配置了Trash,数据实际上会被移动  到.Trash/Current目录,除非指定了PURGE,但是元数据会完全丢失。见上面的删除表。

对于受 NO_DROP CASCADE 保护的表,您可以使用谓词 IGNORE PROTECTION 删除指定的分区或分区集(例如,在两个 Hadoop 集群之间拆分表时):
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec IGNORE PROTECTION;
无论表的保护状态如何,上述命令都会删除该分区。

也可以使用表属性 auto.purge 指定清除选项。

在Hive 0.7.0或更高版本中,如果分区不存在,DROP将返回一个错误,除非指定了if EXISTS或配置变量Hive .exec. drop.ignorenonexistent被设置为true。
ALTER TABLE page_view DROP PARTITION (dt='2008-08-08', country='us');

Truncate Table

TRUNCATE [TABLE] table_name [PARTITION partition_spec];
partition_spec:
  : (partition_column = partition_col_value, partition_column = partition_col_value, ...)
从表或分区中删除所有行。 如果启用了filesystem Trash,这些行数据将被回收,否则它们将被删除(从 Hive 2.2.0 开始)。目标表应该是本地表/管理表,否则将会抛出异常。 用户可以指定partial partition_spec 来一次清空多个分区,省略partition_spec 将清空表中的所有分区。

从 HIVE 2.3.0开始,如果表属性“auto.purge”设置为“true”,则对它使用 TRUNCATE TABLE 命令时,表的数据不会移动到垃圾箱(Trash)中 并且在错误 TRUNCATE 的情况下无法检索。 这仅适用于管理表。 如果管理表的“auto.purge”属性未设置或设置为 false,则可以关闭此行为。

从 Hive 4.0 (HIVE-23183) 开始, TABLE  token是可选的,以前的版本需要它。
上一篇:大数据开发之Kafka生产过程的分析


下一篇:2021Java开发社招面试总结,mysql存储引擎的区别