注意:必須在表定義時指定對應的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;
hive 分割槽 hive 分割槽概念 0323
1 hive 分割槽表 在hive select查詢中一般會掃瞄整個表內容,會消耗很多時間做沒必要的工作。有時候只需要掃瞄表中關心的一部分資料,因此建表時引入了partition概念。分割槽表指的是在建立表時指定的partition的分割槽空間。hive可以對資料按照某列或者某些列進行分割槽管理,所...
HIVE分割槽,靜態分割槽,動態分割槽
分割槽可以大大提公升hive的效能,這裡就要提到數倉的分層 原始資料層,儲存原始收集的資料 數倉明細層,裡面做的是轉換和分析,裡面包含部分的資料清洗的過程 數倉服務層,對外業務的處理,如維度轉 鍵 身份證清洗 會員註冊 清晰 字段合併 空值處理 髒資料處理 ip清晰轉換等 最終業務層 適合做增量表,...
HIve學習 Hive分割槽修改
如何修改hive的分割槽 hive讀寫模式 hive分割槽的意義是避免全表掃瞄,從而提高查詢效率。預設使用全表掃瞄。partitioned by columnname columntype comment column comment 1 hive的分割槽名區分大小寫 2 hive的分割槽欄位是乙個...