Hive - 分割槽



Hive 將表組織成分割槽。這是一種根據分割槽列的值(例如日期、城市和部門)將表劃分為相關部分的方法。使用分割槽,可以輕鬆查詢資料的一部分。

表或分割槽細分為,為資料提供額外的結構,可用於更高效的查詢。桶化基於表中某些列的雜湊函式值。

例如,名為Tab1的表包含員工資料,例如 id、姓名、部門和 yoj(即加入年份)。假設您需要檢索所有 2012 年加入的員工的詳細資訊。查詢會搜尋整個表以查詢所需資訊。但是,如果您按年份對員工資料進行分割槽並將其儲存在單獨的檔案中,則可以縮短查詢處理時間。以下示例顯示如何分割槽檔案及其資料

以下檔案包含 employeedata 表。

/tab1/employeedata/file1

id, name, dept, yoj
1, gopal, TP, 2012
2, kiran, HR, 2012
3, kaleel,SC, 2013
4, Prasanth, SC, 2013

以上資料使用年份劃分為兩個檔案。

/tab1/employeedata/2012/file2

1, gopal, TP, 2012
2, kiran, HR, 2012

/tab1/employeedata/2013/file3

3, kaleel,SC, 2013
4, Prasanth, SC, 2013

新增分割槽

我們可以透過更改表來向表新增分割槽。讓我們假設我們有一個名為employee的表,其欄位如 Id、Name、Salary、Designation、Dept 和 yoj。

語法

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...;

partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)

以下查詢用於向 employee 表新增分割槽。

hive> ALTER TABLE employee
> ADD PARTITION (year=’2012’)
> location '/2012/part2012';

重新命名分割槽

此命令的語法如下。

ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec;

以下查詢用於重新命名分割槽

hive> ALTER TABLE employee PARTITION (year=’1203’)
   > RENAME TO PARTITION (Yoj=’1203’);

刪除分割槽

以下語法用於刪除分割槽

ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...;

以下查詢用於刪除分割槽

hive> ALTER TABLE employee DROP [IF EXISTS]
   > PARTITION (year=’1203’);
廣告
© . All rights reserved.