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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM