(1)确保能运行hive -e ""
(2)在旧集群,生成导出脚本 —— vi hive_export.sh
#!/bin/bash
if [ "X$1" == "X" ];
then
echo "请带入需要备份的库名集合,比如:aa bb cc"
exit
fi
# 指定导出脚本生成位置
export='/tmp/export.hql'
# 指定数据在hdfs的存储目录
catalogue='/tmp/export_db_tmp'
# 创建目录
hdfs dfs -mkdir -p $catalogue
# 删除脚本,保证可重复执行
rm -r -f /tmp/export.hql
# 循环各个库,生成导出脚本
while [ "$#" -ge "1" ];do
hive -e "use $1; show tables;" | grep -v " " | awk -vdatabases="$1" -vcatalogue="$catalogue" '{printf "export table %s to |%s|;\n",databases"."$1,catalogue"/"databases"/"$1}' | sed "s/|/'/g" | grep -v tab_name >> $export
shift
done
(3)在旧集群,执行导出脚本
sh hive_export.sh ...
h