美文网首页
关于hive 的迁移 之 表结构批量迁移

关于hive 的迁移 之 表结构批量迁移

作者: Helen_Cat | 来源:发表于2018-06-27 11:48 被阅读166次
image.png

我们在做数据治理 数据仓库的时候 ,集群数据迁移时必不可少的一项,因为什么呢,
比如
1刚开始集群搭在亚马逊aws,几十万美金的创业红包用完了,差不多三四个月,
2aws的小规模集群也有 900TB 的数据,迁移到 腹黑的阿里云平台,
3过几天有人来你公司搞推销,告诉你使用他们 阿里云大集团账号上六折折扣,结果迁移到他们的上面,
4结果过了半年阿里云开始清查,发现他们的大集团账号违规操作,收回折扣价,公司为了节约成本 ,限期迁移,这回又自己买服务器捯饬搭建本地集群,可算是一次投入 ,只交电网费了
5又过了半年,办公区老限闸停电,业务受阻苦不堪言,结果又含泪 找了 第三方的实体机房配置新的集群,这回可算消停了一下,
6 结果公司业务扩张,又不得不在更多大中华区各个片区机房购买机器配置集群,
7.过了半年 又嫌机器性能不够好,同地异地 统统更换性能硬件更好的机器
8.过了一段时间公司烧钱厉害,要倒闭,有价值的数据清洗打包卖给 第三方数据商贩
来来回回没有终点,一段曲折的历史 倒出不尽人意的辛酸苦楚,上面的过程都要迁移数据,迁移数据包括 表结构和表数据,迁移还不是终点,还要rebalance

下面先讲讲 hvie 的迁移 之一 表结构 迁移,
假设我们在A 集群上有一个库 fkdb ,有上千张表,
如果自己用最笨的方法迁移, 比如说登录到 hive上,
desc table name ,显示出表的结构,然后粘贴复制到文本文件里,然后自己再组织结构成创建表的语句,然后再 在B 集群上 执行创建表语句,那么一个表大于 20分钟才可以,上千张表的话,一个月都干不完,平均一天 也才30张表,
那我们一定要结合 shell 脚本的便利,能用脚本自动化执行的,就交给脚本就可以了,

为了方便大家理解,我们先做一些解释说明
hive -e 字符串语句hive 命令, 这个可以 执行hsql 语句
hive -f hsql脚本文件 这个可以 执行hsql 文件 ,比如创建表
show create table database.tablename 这个会显示创建表的语句
desc table tablename 这个会显示表的结构

output.hql 追加到文件中
我们可以一步到位
hive -e 'show create table database.tablename' >>tab_create.hql 这样就把创建表的语句追加到文件中了
然后我们在B 集群执行
hive -f tab_create.hql 就可以把 创建表语句执行

面对上千张表,我们使用 shell 的for 来遍历
for tab in hive -e 'use fkdb;show tables;do script ;done

下面是 执行 过程

mkdir  export_tab
cd export_tab
vi  export_tab.sh

#!/bin/bash

for tab in  `hive -e  'use fkdb;show tables'`;do
    suffix=_create.hql
    hive -e "show create table fkdb.$tab" >> ./$tab$suffix ;
done

esc : wq #保存退出
chmod  u+x export_tab.sh
sh ./export_tab.sh

#等待脚本执行完毕,此目录会生成 所有表的创建语句,其实也可以吧所有表的创建语句追加到同一个文件里,这样 在B 集群导入表结构会一次到位 
 cat *_create.hql >> tab_create_all.hql
zip -r  tab_cre.zip ./*_create.hql

然后将 tab_cre.zip 传输到B 集群上,然后执行

mkdir import_tab
cd import_tab
unzip tab_cre.zip -d ./
vi  import_tab.sh

#!/bin/bash
for tab in `ls **_create.hql`;do
  hive  -f  $tab

esc : wq #保存退出
chmod  u+x import_tab.sh
sh ./import_tab.sh

这样fkdb上的所有表结构就完成了 跨集群的创建,而且是原汁原味,自己粘贴复制 上千张表必然会出事故,出错就在所难免了
这个时候需要注意的是 在B 集群上的 同名数据库是否存在 ,库表的权限和操作用户是否和A 集群上相同

相关文章

  • 关于hive 的迁移 之 表结构批量迁移

    我们在做数据治理 数据仓库的时候 ,集群数据迁移时必不可少的一项,因为什么呢,比如1刚开始集群搭在亚马逊aws,几...

  • hive的这些事(一)——hive数据迁移

    比如需要把生产的hive集群数据迁移到另一个集群,hive提供了2个命令工具,可以实现表的批量迁移。 [expor...

  • 关于 hive的迁移之数据迁移和跨集群 备份

    昨天讲了 表结构的迁移,结合 shell 和 hive -e 和 hive -f 基本小试牛刀完成了, 重中之重...

  • SQL Server 表迁移

    手动单表迁移 迁移表结构 先删除原表,删除时注意结构,从最次要的表删起 对原表右键 - Script Table ...

  • laravel的数据迁移命令

    1. 创建数据迁移 2. 迁移结构 3. 运行迁移 4. 回滚迁移 5. 编写迁移 创建表使用Schema门面上的...

  • oracle数据库迁移

    背景:需要将数据库迁移到另外一台实例上,全量迁移数据库实例,但是只迁移表结构,数据不需要迁移,具体迁移过程如下。 ...

  • hdfs文件迁移

    hadoop跨集群之间迁移HDFS数据 不同hadoop集群之间迁移hive数据 hadoop跨集群之间迁移hiv...

  • hive 跨集群迁移表

    1. export table xxx to '/tmp/xxxx'; 2.hadoop fs - get /tm...

  • 一篇文章教你自建hadoop集群迁移到EMR

    自建集群要迁移到EMR集群,往往需要迁移已有数据。本文主要介绍hdfs数据和hive meta数据如何迁移。 前置...

  • Hive Migrate

    一、orc分区表迁移 复制元信息,hive同版本:可以恢复 复制元信息,hive高版本:可以恢复 不复制元信息,h...

网友评论

      本文标题:关于hive 的迁移 之 表结构批量迁移

      本文链接:https://www.haomeiwen.com/subject/kokbyftx.html