HIVE数据迁移3

2019-05-09  本文已影响0人  Moon_魔宽

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/77c1ca19d3cb

集群A上HIVE表数据需同步到集群B上,由于每张表做了日分区,传输部分日期数据,通过手工方式一一筛选比较复杂,编写脚本实现。

#!/bin/sh

hdfs_src="hdfs://源集群NN地址:8020"

hdfs_dst="hdfs://目标集群NN地址:8020"

hadoop_cmd="hadoop distcp -update -bandwidth 50"

declare -A dict    //声明字典

dict['talbe1']="/hdfs上table1对应的上层目录/table1"

dict['talbe2']="/hdfs上table2对应的上层目录/table2"

start_day="20190303"

end_day="20190509"

for table in $(echo ${!dict[*]})      //遍历字典所有key值,即表名

do

  hdfs_path=$(echo ${dict[$table]})  //赋值每张表对应的hdfs路径

  start_date=`date -d "$start_day" +%Y%m%d`  //获取日期变量

  end_date=`date -d "$end_day" +%Y%m%d`

      while [[ $start_date < $end_date ]]

      do

      hadoop distcp -update -bandwith 15 $hdfs_src$hdfs_path/dt=$start_date $hdfs_dst$hdfs_path/dt=$start_date

      start_date=`date -d "+1 day $start_date" +%Y%m%d`

      done

done

之后在集群B上建库建表,执行msck repair table 表名。这步后面再更新到脚本中。

上一篇 下一篇

猜你喜欢

热点阅读