Hive中怎么快速复制分区表

(作者:陈玓玏 data-master
我们在hive中操作底层表时,经常会在临时库中做一些测试,然后再把一些测试过程中产生的需要长期保留的结果固化到线上库中。或者是在进行数据库的大清理时,产生大量数据迁移的需求,这时候我们需要知道怎么样迁移hive表。

举个栗子,比如我现在要将表A迁移为表B,
以下步骤:

  1. 建立一个结构相同的表;
create table tmp.B like tmp.A;

这样我们就建立了一个和表A结构完全一模一样的表B,但是里头是没人任务数据的,因为create like只复制表结构,不复制数据,复制数据需要操作hdfs。

  1. 迁移hdfs文件;
    我们先查看两个表的hdfs文件分别在什么位置
show create table tmp.A;
show create table tmp.B;

也有可能,这样也不显示表的路径,具体原因尚不清楚,那我们可以用以下方法让路径显示出来:

desc formatted tmp.A;
desc formatted tmp.B;

这两种方法至少有一种能获取到表的Location的。
找到表的location之后,我们就可以复制文件了。

hadoop fs -cp hdfs://nameservice1/user/hive/warehouse/tmp.db/A/*   hdfs://nameservice1/user/hive/warehouse/tmp.db/B/
  1. 更新元数据信息

虽然我们已经把数据放到了对应的hdfs目录下,但元数据信息没有更新,hive查表B时,仍然不知道表B下面的文件更新了,所以会出现无法查数据的情况,这时候我们更新元数据信息就可以了。

MSCK REPAIR TABLE tmp.B

至此,大功告成。

参考资料:
https://www.jianshu.com/p/c1b0dc86f9b0

猜你喜欢

转载自blog.csdn.net/weixin_39750084/article/details/107509339