hive数据迁移

来源:互联网 发布:syslog服务器软件下载 编辑:程序博客网 时间:2024/05/29 14:14


数据迁移脚本:
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/


0 0
原创粉丝点击