• 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;

  • 相关阅读:
    机会的三种境界
    常用“快”捷键
    心路历程
    中兴笔试及答案
    浅谈oracle中row_number() over()分析函数用法
    IE的F12开发人员工具不显示问题
    1002.A + B Problem II --大数问题
    6470.count --快速矩阵幂
    4151.电影--贪心
    3070.斐波拉契数列--快速幂
  • 原文地址:https://www.cnblogs.com/students/p/11236559.html
Copyright © 2020-2023  润新知