zoukankan      html  css  js  c++  java
  • hive数据迁移 从apache2.x迁移到cdh hive 1.x

    迁移背景:

    1、hive有30多个库,最大的库有100多张表,这中情况下必须采用 脚本式 迁移

    2、2个hive版本不一致,元数据mysql表结构不一致,不能采用mysql数据库覆盖方式

    3、hive数据仓库只迁移一部分,另外一部分后续迁移,不能采用mysql数据库覆盖方式

    4.  2个集群暂时未开启权限认证

    迁移流程:

    1.apache集群导出元数据

    #导出hive数据库test,脚本的grep -V为了去除导出脚本的警告语句
    
    #/bin/bash
    database=test
    datalocalpath=/home/dip/test
    for tab in `hive -e "use $database;show tables" |grep -v WARN`
    do
    hive -e  "show create table $database.$tab" |grep -V WARN > $datalocalpath/$tab.sql
    done

    2.cdh集群导入元数据

     注意,如果2个集群数据仓库存储目录不一致,需要修改导出的sql脚本 主要修改以下位置

    LOCATION
    'hdfs://nameservice/user/hive/warehouse/test.db/word'

    新集群先建立数据库test
    create database test;

    test库导入数据

    #/bin/bash   
    datalocalpath=/home/dip/test
    for  tab in `ls $datalocalpath`
    do
    hive -f $datalocalpath/$tab
    done

    3.hdfs数据迁移(cdh的namenode端口8020)

    hadoop distcp -update /hive/warehouse/test.db hdfs://198.2.120.31:8020/user/hive/warehouse/test.db/

    4.修复表分区

    for tab in `hive -e "use test;show tables" |grep -v WARN` ;do MSCK REPAIR TABLE test.$tab ;done

    #这里的数据库只有一级分区,如果有多层分区参考

    set hive.msck.path.validation=ignore;

    MSCK REPAIR TABLE table_name;

  • 相关阅读:
    MySQL详细安装(windows)
    深入理解java虚拟机
    java语言实现机制
    java基本类型的长度
    关于SQLite数据库 字段 DateTime 类型
    "初识".Net Winfom
    Linux Shell脚本编程while语句
    mysql主从搭建
    oracle dg状态检查及相关命令
    Oracle 11.2.0.4单实例打补丁
  • 原文地址:https://www.cnblogs.com/students/p/11236559.html
Copyright © 2011-2022 走看看