Hive分區

注意:必須在表定義時指定對應的partition字段。優化

一.指定分區

  1.單分區spa

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

    單分區表,按天分區,在表結構中存在id,content,dt三列。it

    以dt爲文件夾區分。io

  2.雙分區table

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

    雙分區表,按天和小時分區,在表結構中新增長了dt和hour兩列。file

    先以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;

相關文章
相關標籤/搜索