Hive 数据迁移


相关命令

导出表结构:

show create table <表名>

通过 shell 命令批量导出全部库表结构

#!/bin/bash
rm -rf databases.txt
hive -e " show databases; exit ;" > databases
#sleep(2)
rm -rf ./tables/*
for database in `cat databases`
do
  {
  hive -e " use ${database} ;  show tables ; exit ;" > ./tables/${database}
  rm -rf ./desc_table/${database}
  for table in `cat ./tables/${database}`
  do
     mkdir -p ./desc_table/${database}
     hive -e "use ${database} ; show create table $table ;" > ./desc_table/${databas}/${table}
  done
  }&
done
wait

批量导出某库下表结构(test.sh):

#!/bin/bash
database=$1
for table in `cat ./tables/${database}`
do
echo ${table}
mkdir -p ./desc_table/${database}
hive -e "use ${database} ; show create table ${table} ;" > ./desc_table/${database}/${table}
done
wait

使用方式:

./test.sh <库名>

批量导出某库下表结构,方案2(hive_table_dd.sh):

#!/bin/bash
rm -f tableNames.txt
rm -f HiveTableDDL.txt
hive -e "use $1; show tables;" > tableNames.txt
wait
cat tableNames.txt |while read LINE
   do
   hive -e "use $1;show create table $LINE" >>HiveTableDDL.txt
   echo  -e "\n" >> HiveTableDDL.txt
   done
rm -f tableNames.txt
echo "Table DDL generated"

使用:

>bash hive_table_dd.sh <<databasename>>

注: $1 即调用脚本时输入的第一个参数值。

> file 将输出重定向到 file。
>> file 将输出以追加的方式重定向到 file。

参考文章:

  1. 这篇文章通过将 Hadoop 下数据导出、再导入进行迁移
  2. hive表跨集群迁移