0


hive数据库分区表数据迁移到另一个分区/数据复制

文章目录

一、分区表数据迁移到另一个分区表

有个需求,创建一张备份表,将分区表中的数据迁移到备份表中。以下整理一下几种迁移方式。

创建分区表:

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

本文转载自: https://blog.csdn.net/weixin_49114503/article/details/135021080
版权归原作者 五月天的尾巴 所有, 如有侵权,请联系我们删除。

“hive数据库分区表数据迁移到另一个分区/数据复制”的评论:

还没有评论