在資料倉儲中如何做分割槽表

weixin_34146805發表於2017-05-08
  1. 為什麼做分割槽

分割槽表將資料組織成分割槽,主要可以提高資料的查詢速度。

如果把一年或者一個月的日誌檔案存放在一個表下,那麼資料量會非常的大,當查詢這個表中某一天的日誌檔案的時候,查詢速度還非常的慢,這時候可以採用分割槽表的方式,把這個表根據時間點再劃分為小表。這樣劃分後,查詢某一個時間點的日誌檔案就會快很多,因為這是不需要進行全表掃描。

Hive中的分割槽是根據“分割槽列”的值對錶的資料進行粗略的劃分,Hive中一個表對應一個目錄,再根據分割槽列在這個表目錄下建立子目錄,每個子目錄名就是分割槽列的名字。分割槽列定義與表中欄位相似,但是與表中的欄位無關,是獨立的列。這樣就加快了資料查詢的速度,因為不會對這個表中進行全盤掃描了。

  1. 如何做分割槽

(1)建表語句
create table if not exists latte_d_test
(
uid string comment "使用者ID",
vld_flg string comment "該條記錄是否有效,1-有效,0-無效"
)
COMMENT "test表"
PARTITIONED BY (day STRING);

(2)設定分割槽表引數
set hive.exec.dynamic.partition = true;
設定為true表示開啟動態分割槽功能(預設為false)。
set hive.exec.dynamic.partition.mode = nonstrict;
設定為nonstrict,表示允許所有分割槽都是動態的(預設為strict)。

(3)插入資料
insert overwrite table latte_d_test partition(day)
select uid,
'1',
'2016-10-10'
from test

相關文章