hive 分割槽 hive 分割槽概念 0323

2021-10-11 09:00:40 字數 1441 閱讀 2924

1、hive 分割槽表

在hive select查詢中一般會掃瞄整個表內容,會消耗很多時間做沒必要的工作。有時候只需要掃瞄表中關心的一部分資料,因此建表時引入了partition概念。分割槽表指的是在建立表時指定的partition的分割槽空間。

hive可以對資料按照某列或者某些列進行分割槽管理,所謂分割槽我們可以拿下面的例子進行解釋。

當前網際網路應用每天都要儲存大量的日誌檔案,幾g、幾十g甚至更大都是有可能。儲存日誌,其中必然有個屬性是日誌產生的日期。在產生分割槽時,就可以按照日誌產生的日期列進行劃分。把每一天的日誌當作乙個分割槽。

將資料組織成分區,主要可以提高資料的查詢速度。至於使用者儲存的每一條記錄到底放到哪個分割槽,由使用者決定。即使用者在載入資料的時候必須顯示的指定該部分資料放到哪個分割槽。

1.1 實現細節

1、乙個表可以擁有乙個或者多個分割槽,每個分割槽以資料夾的形式單獨存在表資料夾的目錄下。

2、表和列名不區分大小寫。

3、分割槽是以字段的形式在表結構中存在,通過describe table命令可以檢視到字段存在, 但是該字段不存放實際的資料內容,僅僅是分割槽的表示(偽列) 。

1.2 語法

1. 建立乙個分割槽表,以 ds 為分割槽列:

create table invites (id int, name string) partitioned by (ds string) row format delimited fields terminated by 't' stored as textfile;

2. 將資料新增到時間為 2013-08-16 這個分割槽中:

load data local inpath '/home/hadoop/desktop/data.txt' overwrite into table invites partition (ds='2013-08-16');

3. 將資料新增到時間為 2013-08-20 這個分割槽中:

load data local inpath '/home/hadoop/desktop/data.txt' overwrite into table invites partition (ds='2013-08-20');

4. 從乙個分割槽中查詢資料:

select * from invites where ds ='2013-08-12';

5. 往乙個分割槽表的某乙個分割槽中新增資料:

insert overwrite table invites partition (ds='2013-08-12') select id,max(name) from test group by id;

可以檢視分割槽的具體情況,使用命令:

hadoop fs -ls /home/hadoop.hive/warehouse/invites

hive中partition分割槽概念

一 背景 1 在hive select查詢中一般會掃瞄整個表內容,會消耗很多時間做沒必要的工作。有時候只需要掃瞄表中關心的一部分資料,因此建表時引入了partition概念。2 分割槽表指的是在建立表時指定的partition的分割槽空間。3 如果需要建立有分割槽的表,需要在create表的時候呼叫...

HIVE分割槽,靜態分割槽,動態分割槽

分割槽可以大大提公升hive的效能,這裡就要提到數倉的分層 原始資料層,儲存原始收集的資料 數倉明細層,裡面做的是轉換和分析,裡面包含部分的資料清洗的過程 數倉服務層,對外業務的處理,如維度轉 鍵 身份證清洗 會員註冊 清晰 字段合併 空值處理 髒資料處理 ip清晰轉換等 最終業務層 適合做增量表,...

HIve學習 Hive分割槽修改

如何修改hive的分割槽 hive讀寫模式 hive分割槽的意義是避免全表掃瞄,從而提高查詢效率。預設使用全表掃瞄。partitioned by columnname columntype comment column comment 1 hive的分割槽名區分大小寫 2 hive的分割槽欄位是乙個...