1、概述
hive 表删除部分数据不支持使用 Delete From table_name where …语句
hive表删除数据要分为不同的粒度:table、partition、partition内
2、有 Partition 分区表
有分区字段的数据表,删除数据时要注意分两种情况:
1、根据分区删除数据,可以删除满足条件的分区,具体代码格式如下:
--删除一个分区的数据
alter table table_name drop partition(partiton_name='value')--删除多个分区的数据
alter table table_name drop partition(partiton_name<'value')
alter table table_name drop partition(partiton_name<='value')
alter table table_name drop partition(partiton_name>'value')
alter table table_name drop partition(partiton_name>='value')
2、删除分区内部的部分数据,这时使用重写方式对满足条件的分区进行 overwrite 操作,并通过 where 来限定需要的信息,未过滤的的信息将被删除,具体代码格式如下:
insert overwrite table table_name partition(partition_name='value')
select column1,column2,column2 FROM table_name
where partition_name='value' and column2 is not null
3、没有 Partition 分区表
1、直接清空数据,再插入需要的数据,具体代码格式如下:
truncate table database.tablename
2、通过 overwrite 对所有数据重写,具体代码格式如下:
insert overwrite table table_name
select * from table_name WHERE column is not null--限制条件可以自行修改
本文转载自: https://blog.csdn.net/weixin_42039228/article/details/131091443
版权归原作者 sunnyday0426 所有, 如有侵权,请联系我们删除。
版权归原作者 sunnyday0426 所有, 如有侵权,请联系我们删除。