1. 程式人生 > >Hive建立外部表以及分割槽

Hive建立外部表以及分割槽

建立帶分割槽的外部表

建立外部表的優點是資料能夠隨時從hdfs中掛載進表中

使用分割槽的優點是能夠縮短查詢範圍

以下的樣例展示了怎樣建立外部表

CREATE EXTERNAL TABLE my_daily_report(
    last_update string,
    col_a string,
    col_b string,
    col_c string,
    col_d string,
    col_e string,
    col_f string,
    col_g string,
    col_h string,
    col_i string,
    col_j string)
    PARTITIONED BY (
    par_dt string) location '/user/chenshu/data/daily';


掛載分割槽資料夾

alter table my_daily_report add partition (par_dt='20140530') location '/user/chenshu/data/daily/my_daily_report/20140530';


上面的樣例僅僅使用了一個分割槽,事實上還能夠使用多個分割槽,比方一個分割槽管理日報表,這個分割槽相應一個資料夾,在這個資料夾下還能夠有小時分割槽。用不同的資料夾存放不同小時的報表。這時,分割槽之間的關係就是資料夾樹的關係。


刪除分割槽

當然也要提供一個刪除part_dt='20140530'分割槽的方法:

alter table my_daily_report drop partition (par_dt='20140530')

drop partition會將分割槽以及資料都刪除。drop partition_spec會僅僅刪除分割槽元資料。不刪除資料。

注意,HIVE中沒有delete from語句,假設僅僅是刪除某個分割槽裡全部語句,剛好這裡能夠使用drop partition來實現。


用分割槽查詢

既然有了分割槽。假設緊要查詢該分割槽上的資料,在where中指定分割槽資料夾作為查詢條件。要快非常多

select count(*) from my_daily_report where par_dt='20140531';



推薦文章:

http://my.oschina.net/leejun2005/blog/82065