Hive 表的复制

简介

本文介绍hive中表的复制

非分区表的复制

如果我们想要复制一张非分区表,可以使用create tale as去解决;

实例

假如我们有一张t_temp的表,为普通的内部表.复制可以采用如下的语句:

create table t_copy as select * from t_temp;
  • 1

这样就复制出一张和t_temp结构一致的表

分区表的复制

分区表如果采用这种create…as…的方法去复制,数据是可以查询的,但是表的结构是错误的,他已经变成了一个非分区表.想要去实现分区表的复制,有下面2种方法

动态分区

我们可以建一张和t_temp一样的表结构的表,然后使用动态分区的方法把数据导入

create table t_copy like t_part;
insert overwrite  table  t_copy partition(year,month)
select id,name,orderdate,substring(orderdate,1,4),substring(orderdate,6,2) from t_part;
  • 1
  • 2
  • 3

执行后可以得到和之前一样的分区表,但是这种方法并不是最快的方法 
- 注意当使用了overwrite时,不再使用into.

msck修复分区

我们可以先复制出一张表结构和t_part一样的表,然后将t_part表目录下的数据copy到t_copy,然后使用分区表的msck指令去重新生成分区.

create table t_copy like t_part;
dfs -cp /user/hive/warehouse/test_neil.db/t_part/* /user/hive/warehouse/test_neil.db/t_copy/;
msck repair table t_copy;
  • 1
  • 2
  • 3

使用这样的方法同样可以去快速copy分区表,而且这样操作的速度比使用动态分区要快,因为我们移动数据是使用hdfs的文件复制,而不是启动mapreduce作业.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值