ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-11-14

2021-11-14 19:00:18  阅读:192  来源: 互联网

标签:11 partition 14 删除 分区 DROP 2021 TABLE Trash


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是可选的,以前的版本需要它。

标签:11,partition,14,删除,分区,DROP,2021,TABLE,Trash
来源: https://blog.csdn.net/qq_41953856/article/details/121321002

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有