hive集群间数据迁移,export+import

本文提供了一套完整的Hive数据迁移流程,从生成导出脚本到执行导入脚本,涵盖了Hive 0.8.0及后续版本的EXPORT与IMPORT命令使用方法,并通过实例演示了如何将数据从一个Hive集群迁移到另一个集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方参考链接:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ImportExport

The EXPORT and IMPORT commands were added in Hive 0.8.0 (see HIVE-1918).

Replication extensions to the EXPORT and IMPORT commands were added in Hive 1.2.0 (see HIVE-7973 and Hive Replication Development).


1.生成导出脚本

beeline -u 'jdbc:hive2://bigdata01.younge.club:10000' -n test-user -p 123456 -e "use bigdata_ods;show tables" | grep 'ods*' | awk '{print $2}' | awk '{printf "export table bigdata_ods.%s to @/tmp/hive_export/%s@;\n",$1,$1}' | sed "s/@/'/g" > hive_export.hql


3.执行导出脚本
beeline -u 'jdbc:hive2://bigdata01.younge.club:10000' -n test-user -p 123456 -f hive_export.hql


4.下载hdfs数据到本地
hdfs dfs -get /tmp/hive_export/


5.压缩生成的本地的hive_export文件夹
tar -czvf hive_export.tar.gz hive_export


6.上传到目标集群并解压缩
tar -xvzf hive_export.tar.gz


7.上传到目标集群的HDFS目录中
hdfs dfs -put hive_export /tmp/hive_export


8.构造导入脚本
cp hive_export.sql hive_import.sql
sed -i 's/export table/import table/g' hive_import.sql
sed -i 's/ to / from /g' hive_import.sql


9.hive新建目标数据库
create database bigdata_ods;


10.执行导入脚本,导入数据
beeline -u 'jdbc:hive2://bigdata01.younge.club:10000' -n test-user -p 123456 -f hive_import.hql
可以使用以下两种方法将表从一个Hive集群迁移数据到另一个集群: 1. 使用Hive的导入导出工具 Hive提供了一个命令行工具,称为“导入导出”(import/export),可以将表从一个集群导出到HDFS文件中,然后再从HDFS文件中导入到另一个集群中的表中。以下是迁移表的步骤: 在源集群中使用导出工具将表导出到HDFS文件中: ``` $ hive -e 'set hive.cli.print.header=false; set hive.exec.compress.output=false; set hive.exec.compress.intermediate=false; set mapred.max.split.size=256000000; set mapred.min.split.size.per.node=100000000; set mapred.min.split.size.per.rack=100000000; set mapred.job.queue.name=exportQueue; INSERT OVERWRITE DIRECTORY "/tmp/hive-export/tableName" SELECT * FROM tableName;' ``` 在目标集群中使用导入工具将表从HDFS文件中导入到新表中: ``` $ hive -e 'set hive.cli.print.header=false; set hive.exec.compress.output=false; set hive.exec.compress.intermediate=false; set mapred.max.split.size=256000000; set mapred.min.split.size.per.node=100000000; set mapred.min.split.size.per.rack=100000000; set mapred.job.queue.name=importQueue; CREATE TABLE tableName (col1 type1, col2 type2, ..., colN typeN) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; LOAD DATA INPATH "/tmp/hive-export/tableName" INTO TABLE tableName;' ``` 2. 使用DistCp工具 另一种方法是使用Hadoop的DistCp工具将表从一个集群复制到另一个集群。以下是迁移表的步骤: 在源集群中使用DistCp将表复制到HDFS文件中: ``` $ hadoop distcp hdfs://source-hadoop-cluster:8020/user/hive/warehouse/table_name hdfs://destination-hadoop-cluster:8020/user/hive/warehouse/ ``` 在目标集群中使用Hive命令创建新表并加载数据: ``` $ hive -e 'CREATE TABLE table_name (col1 type1, col2 type2, ..., colN typeN) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; LOAD DATA INPATH "/user/hive/warehouse/table_name" INTO TABLE table_name;' ``` 请注意,这两种方法都需要在目标集群中创建新表以存储导入的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值