Hive数据在Hadoop集群间的迁移

环境说明:
136.64.69.10(e3base02)    原集群Hive服务端
136.64.69.49(e3base49)    目标集群Hive服务端
136.64.69.75(e3base55)    目标集群Hive客户端
weixh_test                           Hive测试库

1、创建目录

原集群导出数据临时目录

hdfs dfs -mkdir /tmp/weixh_test

2、生成导出数据脚本

在136.64.69.10主机执行:

beeline -u jdbc:hive2://e3base02:9066/weixh_test -n e3base -p 111111 -e "show tables" | awk '{printf "export table %s to |/tmp/weixh_test/%s|;\n",$1,$1}' | sed "s/|/'/g" > /e3base/weixh/export.hql

测试中发现beeline命令出来的格式不正确,需要使用如下的hive -e 命令:
但注意,需要在hive命令中加入 use database_name

hive -e "use weixh_test;show tables" | awk '{printf "export table %s to |/tmp/weixh_test/%s|;\n",$1,$1}' | sed "s/|/'/g" > /e3base/weixh/export.hql

导出的export.hql样例:

export table ind_cpc_activity_user_list_d_old to '/tmp/weixh_test/ind_cpc_activity_user_list_d_old';

注意:以上的方法是导出整个weixh_test数据库下的表,
如果只需要迁移个别表,可以单独的写export.hql,
内容参考以上的样例,更改表名与路径名即可。

3、手工导出数据到hdfs

beeline -u jdbc:hive2://e3base02:9066/weixh_test -n e3base -p 111111 -f /e3base/weixh/export.hql

4、下载数据到本地

在136.64.69.10主机执行:

hadoop fs -get /tmp/weixh_test /e3base/weixh

5、上传到目标集群

在136.64.69.10主机执行:

scp -r /e3base/weixh/weixh_test e3base55:/e3base/tmp
hdfs dfs -put /e3base/tmp/weixh_test /tmp/

这样目标集群HDFS下就会有/tmp/weixh_test路径了。

注意:原集群与目标集群的目录名字一定要一样,脚本里需要。
并且,下载和上传数据时,都要保证本地主机满足数据的存储量。

6、构造导入语句

在136.64.69.10主机执行:

cp /e3base/weixh/export.hql /e3base/weixh/import.hql
sed -i 's/export table/import table/g' /e3base/weixh/import.hql
sed -i 's/ to / from /g' /e3base/weixh/import.hql
scp /e3base/weixh/import.hql e3base55:/e3base/tmp/

导入脚本import.hql样例:

import table ind_cpc_activity_user_list_d_old from '/tmp/weixh_test/ind_cpc_activity_user_list_d_old';

注意:以上的方法是导入整个weixh_test数据库下的表,
如果只需要迁移个别表,可以单独的写import.hql,
内容参考以上的样例,更改表名与路径名即可。

7、手动导入数据

e3base55(136.64.69.75)主机,连接新集群的hive端口:

beeline -u jdbc:hive2://e3base49:10000/weixh_test -n e3base -p 111111 -f /e3base/tmp/import.hql

导入后,迁移的表数据就能在目标集群Hive中查到。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值