hive数据库分区表数据迁移到另一个分区/数据复制
•
大数据
文章目录
- 一、分区表数据迁移到另一个分区表
-
- 1.1、方式一
- 1.2、方式二
- 二、报错解决
一、分区表数据迁移到另一个分区表
有个需求,创建一张备份表,将分区表中的数据迁移到备份表中。以下整理一下几种迁移方式。
创建分区表:
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; 2022 2023
二、报错解决
若上述的迁移出现问题,可以通过以下方式设置参数后重新尝试。
1)查看参数设置
# 查看分区模式 set hive.exec.dynamic.partition.mode; # 是否启动动态分区 set hive.exec.dynamic.partition;
2)设置参数
关闭严格分区模式 动态分区模式时是严格模式,也就是至少有一个静态分区。 set hive.exec.dynamic.partition.mode=nonstrict //分区模式,默认nostrict set hive.exec.dynamic.partition=true //开启动态分区,默认true
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/50a7535963.html
