Hive操作——删除表(drop、truncate)

Hive删除操作主要分为几大类:删除数据(保留表)、删除库表、删除分区。我将以下图为例清空iot_devicelocation中的数据,之后再删除表、库等。

首先来看一下iot_deivcelocation中的数据。select * from iot_deivcelocation。

一、仅删除表中数据,保留表结构

hive> truncate table iot_devicelocation;

truncate操作用于删除指定表中的所有行,相当于delete from table where 1=1.表达的是一个意思。

注意:truncate 不能删除外部表!因为外部表里的数据并不是存放在Hive Meta store中。创建表的时候指定了EXTERNAL,外部表在删除分区后,hdfs中的数据还存在,不会被删除。因此要想删除外部表数据,可以把外部表转成内部表或者删除hdfs文件。

二、删除表

hive> drop table if exists iot_devicelocation;

drop table if exists table_name;

三、删除库

hive> drop database if exists xpu123;

 drop database if exists database_name;但是根据第二步操作结束,我们的数据库xpu123中,还存在iot_deviceenergytype表,因此,如果直接删除,会报以下错误。Hive会提醒你,将要执行删除操作的xpu123的库里面还存在tables。

解决这个错误有两种方法:一、就是很简单的将所有表先删除完,再删除库。

另外一种就是使用下述的方法:使用cascade关键字执行强制删库。drop database if exists xpu123 cascade; 如下所示

四、删除hive分区

alter table table_name drop partition (partition_name='分区名')

hive> alter table tablename drop partition(load_date='2019-01-01');

 

### Hive 删除数据的方法及语法 在 Apache Hive 中,删除数据的操作可以通过多种方式进行实现。以下是常用的几种方法及其对应的语法: #### 方法一:通过 `ALTER TABLE` 删除指定分区 对于分区分割的,可以直接使用 `ALTER TABLE ... DROP PARTITION` 命令来删除特定分区的数据。此命令会物理上移除该分区以及对应的数据文件。 ```sql ALTER TABLE table_name DROP PARTITION (partition_spec); ``` 例如,假设有一个名为 `test_data` 的,并且需要删除日期为 `'2022-06-25'` 的分区,则可以执行如下命令[^1]: ```sql ALTER TABLE test_data DROP PARTITION (dt='2022-06-25'); ``` 这种方法适用于仅需清理某些分区的情况,而无需影响其他分区或整张。 --- #### 方法二:通过 `TRUNCATE TABLE` 清空数据 当需要快速清空一张的所有数据而不删除元数据结构时,可采用 `TRUNCATE TABLE` 语句。这将保留定义并释放底层存储空间。 ```sql TRUNCATE TABLE table_name; ``` 需要注意的是,`TRUNCATE TABLE` 只能用于内部(Managed Table),对外部(External Table)不起作用[^4]。如果尝试在外上调用此命令,可能会抛出错误提示。 --- #### 方法三:通过覆盖写入新数据间接删除旧数据 另一种方式是借助插入操作替换现有记录从而达到逻辑上的“删除”。比如先调用 `INSERT OVERWRITE` 将筛选后的目标子集重新加载回原位置即可完成类似效果: ```sql -- 插入符合条件的新数据到同一张中, 覆盖原始内容. INSERT OVERWRITE TABLE target_table SELECT * FROM source_table WHERE condition; ``` 这种方式适合于复杂条件过滤场景下批量更新或者剔除非必要字段的情形. --- #### 方法四:彻底删除整个(含结构与关联资料) 最后一种极端手段即完全摧毁对象本身连同其所依附的一切资源一起销毁掉——也就是所谓的DROP动作啦! ```sql DROP TABLE IF EXISTS table_name CASCADE; ``` 这里特别强调一下参数选项CASCADE的意义在于强制级联消除依赖关系诸如视图之类的附属物项以防残留垃圾干扰后续重建过程.[^2] --- ### 总结说明 综上所述,Hive 提供了灵活多样的机制让用户能够根据不同需求选取最合适的策略来进行高效便捷的数据维护工作.无论是针对局部调整还是全局重构都有相应的解决方案可供选择.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值