数据迁移脚本:
1、在原集群上创建,并设置相应权限
hadoop fs -mkdir /tmp/hive-export
2、生成导出脚本
hive -e "use fangyc;show tables " | awk '{printf "use fangyc;export table %s to @/tmp/hive-export/%s@;\n",$1,$1}' | sed "s/@/'/g" > export.hql
fangyc:是数据库名,根据实际情况修改
3、手工导出数据到hdfs
hive -f export.hql
命令查看下导出数据:hadoop fs -ls /tmp/hive-export
-4、下载hdfs数据到本地并传送到目标hadoop集群的/tmp/hive-export 目录
//注意在目标集群上创建 /tmp/hive-export目录,并且设置相应的操作权限
hdfs dfs -get /tmp/hive-export/* //原集群操作
hdfs dfs -put * /tmp/hive-export //目标集群操作
//单个表数据移动,有bug,此处可以使用distcp 源数据 目标数据
//hadoop distcp hdfs://namenode1/tmp/hive-export/表名 hdfs://namenode2/tmp/hive-export/
5、在目标集群上构建
构造导入语句
cp export.hql import.hql
sed -i 's/export table/import table/g' import.hql
sed -i 's/ to / from /g' import.hql
6、导入数据
hive -f import.hql
分区特别处理(元数据出炉、分区数据导入)
先编辑 import.hql为单一表的操作,最好复制一份
然后执行hive -f import.hql,就是加在元数据
删除dt分区
hadoop fs -rm -r /user/hive/warehouse/zh000001_vrv.db/browselog_gw/dt*
上传本地备份数据中的所有dt到表中
hadoop fs -put browselog_gw/dt* /user/hive/warehouse/zh000001_vrv.db/browselog_gw/