zoukankan      html  css  js  c++  java
  • Hive分区

    注意:必须在表定义时指定对应的partition字段。

    一.指定分区

      1.单分区

        建表语句:create table day_table(id int, content string) partitioned by (dt string);

        单分区表,按天分区,在表结构中存在id,content,dt三列。

        以dt为文件夹区分。

      2.双分区

        建表语句:create table day_hour_table(id int,content string) partitioned by (dt string, hour string);

        双分区表,按天和小时分区,在表结构中新增加了dt和hour两列。

        先以dt为文件夹,再以hour子文件区分。

    二.添加分区

      添加语句:ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location'] partition_spec [LOCATION 'location2']...

        例子:ALTER TABLE day_table ADD PARTITION (dt='2019-03-27',hour='20')

    三.删除分区

      删除语句:ALTER TABLE table_name DROP partition_spec,partition_spec...

      注意:内部表中对应分区的元数据和数据都将被一并删除。

      例子:ALTER TABLE day_hour_table DROP PARTITION (dt='2019-03-27',hour='21');

    四.指定分区添加数据

      添加语句:LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION(partcol=val1,partcol2=val2...)]

      例子:

        1.LOAD DATA INPATH '/usr/pv.txt' INTO TABLE day_hour_table PARTITION (dt='2019-03-27', hour='21');

        2.LOAD DATA local INPATH '/user/zhen/*' INTO TABLE day_hour partition(dt='2019-03-27');

      注意:当数据被加载至表中时,不会对数据进行任何转换。LOAD操作只是将数据复制至Hive表对应的位置上。数据加载是会在表下自动创建一个目录。

    五.查询

      查询语句:SELECT day_table.* FROM day_table WHERE day_table.dt>='2019-03-27'; 

      注意:分区表的意义在于优化查询。查询时尽量利用分区字段。如果不使用分区字段,就会全表扫描。

    六.查看表分区信息

      语句:SHOW PARTITIONS day_hour_table;

  • 相关阅读:
    HTML DOM 06 节点关系
    HTML DOM 05 事件(三)
    HTML DOM 05 事件(二)
    HTML DOM 05 事件(一)
    html DOM 04 样式
    html DOM 03 节点的属性
    html DOM 02 获取节点
    html DOM 01 节点概念
    JavaScript 29 计时器
    JavaScript 28 弹出框
  • 原文地址:https://www.cnblogs.com/yszd/p/10610311.html
Copyright © 2011-2022 走看看