zoukankan      html  css  js  c++  java
  • Hive中如何快速的复制一张分区表(包括数据)

    如果我们表的分区创建非常多的话,对于我们装载数据是一件非常麻烦的事,Hive提供动态分区来解决这个问题。
    可以基于查询参数推断出需要创建的分区名称,相比的分区都是静态的,这里就称之为动态的分区。
    怎么来弄呢?

    首先复制表结构:

    create table applogs like applogsnew;

    然后执行插入:

    INSERT overwrite TABLE applogsnew PARTITION(create_time)
    SELECT applogid ,msgtype ,clienttype ,create_time FROM applogs;

    报错了,需要我们开启动态分区的支持

    set hive.exec.dynamic.partition=true;
    set hive.exec.dynamic.partition.mode=nostrict;
    set hive.exec.max.dynamic.partitions.pernode=1000;

    再次执行

    INSERT overwrite TABLE applogsnew PARTITION(create_time) 
    SELECT applogid ,msgtype ,clienttype ,create_time FROM applogs;

    备注:
    在创建分区的时候,最好不要创建过多的分区,如果分区过多的话,查询也是非常的慢的,就像在window下一个文件夹下面的文件过多会对我们的使用造成非常的不便的。
    那么hive能支持多大的分区数呢,可以使用命令set hive.exec.max.dynamic.partitions获取。

  • 相关阅读:
    动画效果
    iOS蓝牙4.0
    讯飞语音接口使用
    Xcode添加注释
    CocoaPods安装
    mac os 下打开FTP服务器
    画面渲染:实时渲染(Real-time Rendering)、离线渲染(Offline Rendering)[转]
    Unity3D笔记 英保通九 创建数
    Unity3D笔记 英保通八 关节、 布料、粒子系统
    Unity3D 记第二次面试
  • 原文地址:https://www.cnblogs.com/zlzhoulei/p/5552366.html
Copyright © 2011-2022 走看看