文章目录
一、分区表数据迁移到另一个分区表
有个需求,创建一张备份表,将分区表中的数据迁移到备份表中。以下整理一下几种迁移方式。
创建分区表:
create table user(id String default null comment '主键id',
name String default null comment '姓名',
birthday String default null comment '出生日期') comment '用户表'
partitioned by(
dt String
)
stored as orc
location 'hdfs://nameservice1//tmp/wrk/user'
tblproperties('transactional'='true')
创建备份表
create table user_bak(id String default null comment '主键id',
name String default null comment '姓名',
birthday String default null comment '出生日期') comment '用户表'
partitioned by(
dt String
)
stored as orc
location 'hdfs://nameservice1//tmp/wrk/user'
tblproperties('transactional'='true')
1.1、方式一
整张表一起迁移,动态创建分区
insert into user_bak partition(dt)select * from user;
1.2、方式二
按分区字段单个分区循环迁移
insert into user_bak partition(dt)select * from user where dt ='2022';
insert into user_bak partition(dt)select * from user where dt ='2023';
可以通过以下命令查看表中有多少分区
hive>select distinct(dt) from user;20222023
二、报错解决
若上述的迁移出现问题,可以通过以下方式设置参数后重新尝试。
1)查看参数设置
# 查看分区模式set hive.exec.dynamic.partition.mode;# 是否启动动态分区set hive.exec.dynamic.partition;
2)设置参数
关闭严格分区模式
动态分区模式时是严格模式,也就是至少有一个静态分区。
sethive.exec.dynamic.partition.mode=nonstrict //分区模式,默认nostrict
sethive.exec.dynamic.partition=true //开启动态分区,默认true
标签:
hive分区数据迁移
本文转载自: https://blog.csdn.net/weixin_49114503/article/details/135021080
版权归原作者 五月天的尾巴 所有, 如有侵权,请联系我们删除。
版权归原作者 五月天的尾巴 所有, 如有侵权,请联系我们删除。