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;

  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/yszd/p/10610311.html
Copyright © 2011-2022 走看看