zoukankan      html  css  js  c++  java
  • Hive-复制表

    非分区表复制

    复制一张非分区表,使用CREATE TABLE IF NOT EXISTS AS SELECT * FROM tb_name;
    只复制表结构,CREATE TABLE IF NOT EXISTS AS SELECT *** FROM tb_name WHERE 1=2;

    PS:
    分区表如果采用这种"CREATE TABLE IF NOT EXISTS AS"的方法复制,表结构将发生改变(会变为非分区表)

    分区表复制

    动态分区

    CREATE TABLE IF NOT EXISTS cm_distribution_shop.dp_shop_user
    shop_sub_id int,  
    openid string,  
    user_id int
    PARTITIONED BY (yymmdd string);
    INSERT OVERWRITE TABLE cm_distribution_shop.dp_shop_user PARTITION (yymmdd) SELECT * FROM sorce_table;
    执行后可以得到和之前一样的分区表,但是这并不是最快的方法 
    PS:使用OVERWRITE,不是INTO

    MSCK修复分区

    step1:
    CREATE TABLE IF NOT EXISTS cm_ods_mask.order_log_tmp LIKE cm_ods_safe.order_log

    step2:
    hdfs dfs -cp /user/hive/warehouse/cm_ods_safe.db/order_log/* /user/hive/warehouse/cm_ods_mask.db/order_log_tmp/

    step3:
    MSCK REPAIR TABLE order_log_tmp

    step4:
    ALTER TABLE order_log_tmp RENAME TO order_log

    PS:
    1)在linux执行
    2)使用 MSCK方法同样可以快速复制分区表,比动态分区要快的原因是使用 hdfs 的文件复制,而不是启动 mapreduce 作业

     说明:此文章主要针对误删除表操作。其它库中有被删除的表的备份,使用该备份进行MSCK修复分区方式操作

  • 相关阅读:
    微信开发返回验证来源方式代码
    Yii 开发过程 tips
    PHP 搜索分词实现代码
    PHP 中文字符串截取
    Ubuntu16.04设置静态ip
    Linux(Ubuntu18.04)安装Chrome浏览器
    ubuntu18.04安装redis
    ubuntu18.04虚拟机安装docker
    虚拟机安装ssh,关闭防火墙
    面试送命题,你为什么从上家公司离职?(面试题总结大全)
  • 原文地址:https://www.cnblogs.com/chwilliam85/p/9768161.html
Copyright © 2011-2022 走看看