HIVE中没有对于部分内容的删除选项,所以拆解为以下4个步骤:
- 把原分区中内容排除掉需要删除的部分移到新分区(可随便设置后续删除)
- 删除原分区
- 把新分区中内容移到原分区
- 删除新分区
以上为详细步骤,也可以在步骤一后直接用新分区insert overwrite旧分区
下面以删除attr_name 的值为’max_recv_count’和’max_send_count’为例:
--步骤一:原分区移至新分区
insert overwrite table qiye_mail_data.app_usage_report_md partition(dt ='2021-01-02' )
select org_id ,attr_name,attr_group,attr_value from qiye_mail_data.app_usage_report_md
where attr_name not in ('max_recv_count','max_send_count')
and dt = '2021-01-01'
--步骤二:删除原分区
alter table qiye_mail_data.app_usage_report_md drop partition (dt ='2021-01-01')
--步骤三:新分区内容移至原分区
insert overwrite table qiye_mail_data.app_usage_report_md partition(dt ='2021-01-01' )
select org_id ,attr_name,attr_group,attr_value from qiye_mail_data.app_usage_report_md
where attr_name not in ('max_recv_count','max_send_count')
and dt = '2021-01-02'
--步骤四:删除新分区
alter table qiye_mail_data.app_usage_report_md drop partition (dt ='2021-01-02')