hive表跨集群迁移

数据量比较大时,选择官方推荐方案distcp;

1.创建目标数据库

CREATE DATABASE IF NOT EXISTS xxxxxx LOCATION '/xxx/xxx/xxxx/xxxx.db';

2.创建目标表,与原表信息博保持一致

CREATE [EXTERNAL] TABLE `xxxx`(

`uid` string,

`channel` string)

PARTITIONED BY (

`date` string)

ROW FORMAT SERDE

'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'

STORED AS INPUTFORMAT

'org.apache.hadoop.mapred.TextInputFormat'

OUTPUTFORMAT

'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

LOCATION

'/xxx/xxxx/xxx.db/xxxx';

3.distcp迁移数据

./hadoop distcp hdfs://source/table/dir  hdfs://target/table/dir

具体使用请详细看官网文档:https://hadoop.apache.org/docs/r3.1.1/hadoop-distcp/DistCp.html

4.恢复数据

(1)外部表比较简单:msck repair table xxxxx;    分区也会自己修复好;

(2)内部表:

         LOAD DATA INPATH '/xxx/xxx/xxx' OVERWRITE INTO TABLE xxx;

         LOAD DATA INPATH '/xxx/xxxx/xxx' OVERWRITE INTO TABLE xxx  PARTITION (xxxx);

         ALTER TABLE xxxx ADD PARTITION (xxxx) location '/xxx/xxx/xxxx/xxxx';

 

 

 

 

 

    有问题加QQ群:877769335

    或者用QQ扫描二维码加群:

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下两种方法将从一个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、付费专栏及课程。

余额充值