公司要完成hive数据迁移
1.创建hdfs临时文件夹来保存数据
hdfs dfs -mkdir /test
- 生成数据导出脚本
执行以下的命令,生成数据导出的脚本
hive -e "set hive.cli.print.header=false;use test;show tables" | awk '{printf "export table %s to /tmp/hive-export/%s;\n",$1,$1}' > export.sql
3.执行导出脚本
hive -f export.sql
4.传递数据
这里可以下载数据到本地进行传输,或是使用hadoop distcp,关键在于网络是否联通
# 网络联通
hadoop distcp -skipcrccheck -update hdfs://master001:9000/test hdfs://master002:9000/test
-skipcrccheck 省略crc检查,如果hadoop版本一样,可以不加,如果低版本向高版本迁移的话,最好带上
-update 增量更新,通过文件名称,大小比较,源文件和目标文件不同则更新
#网络不连通
hdfs dfs -get /tmp/hive-export/
scp -r hive-export/ export.sql master002
hdfs dfs -put hive-export/ /tmp/hive-export
5.生成数据导入脚本
cp export.sql import.sql
sed -i 's/export table/import table/g' import.sql
sed -i 's/ to / from /g' import.sql
6.导入数据
hive -f import.sql
网友评论