hive跨集群迁移表

一、原集群操作:

1、hdfs创建目录
hdfs dfs -mkdir /tmp/hive-export

2、hive导出表命令
hive -e "use 库;show tables" | awk '{printf "use 库;export table %s to @/tmp/hive-export/%s@;\n",$1,$1}' | sed "s/@/'/g" > export.sql

3、报错
return code -101 from org.apache.hadoop.hive.ql.exec.copytask org/apache/hadoop/tools/distcpoptions
使用 -hiveconf hive.root.logger=DEBUG,console 参数打印错误信息,有如下内容:
java.lang.NoClassDefFoundError: org/apache/hadoop/tools/DistCpOptions

4、原因
hive 最后移动数据的时候,需要调用hadoop-distcp-X.X.X.jar,
解决方法:只需要把$HADOOP_HOME/share/hadoop/tools/lib/hadoop-distcp-x.x.x.jar 拷贝到 $HIVE_HOME/lib下面,重启hive即可

5、继续执行2命令

6、hive导出数据到hdfs
hive -f export.sql

二、新集群操作

1、hdfs创建目录
hdfs dfs -mkdir /tmp/hive-export

2、将hdfs数据导入到新集群
hadoop distcp hdfs://原/tmp/hive-export/* /tmp/hive-export

3、修改export.sql
sed -i 's/export table/import table/g' export.sql
sed -i 's/ to / from /g' export.sql

4、执行导入还会报错,按照之前解决方法解决

5、hive导入
hive -f export.sql

你可能感兴趣的:(hive跨集群迁移表)