為什麼分割槽
hive的select查詢時,一般會掃瞄整個表內容。隨著系統執行的時間越來越長,表的資料量越來越大,而hive查詢做全表掃瞄,會消耗很多時間,降低效率。而有時候,我們需求的資料只需要掃瞄表中的一部分資料即可。這樣,hive在建表時引入了partition概念。即在建表時,將整個表儲存在不同的子目錄中,每乙個子目錄對應乙個分割槽。在查詢時,我們就可以指定分割槽查詢,避免了hive做全表掃瞄,從而提高查詢效率。
如何分割槽
根據業務需求而定,不過通常以年、月、日、小時、地區等進行分割槽。
分割槽的技術
partitioned by (colname coltype [comment 『…』],…)
分割槽的意義
讓使用者在做資料統計的時候縮小資料掃瞄的範圍,在進行select操作時可以指定要統計哪個分割槽
分割槽的本質
在表的目錄或者是分割槽的目錄下在建立目錄,分割槽的目錄名為指定字段=值
create table if not exists part1(
id int,
name string,
age int
) partitioned by (dt string)
row format delimited
fields terminated by '\t'
lines terminated by '\n';
分割槽資料的匯入方式:
load data local inpath 『./data/user.txt』 into table part1 partition(dt='2018-03-20'),
load data local inpath './data/user.txt' into table part1 partition(dt='2018-03-21');
create table if not exists part2(
id int,
name string,
age int
) partitioned by (year string,month string)
row format delimited fields terminated by '\t';
載入資料
load data local inpath '/hivedata/user.txt' into table part2 partition(year='2018',month='03');
load data local inpath '/hivedata/user.txt' into table part2 partition(year='2018',month=02);
create table if not exists part3(
id int,
name string,
age int
) partitioned by (year string,month string,day string)
row format delimited
fields terminated by '\t';
載入資料
load data local inpath '/hivedata/user.txt' into table part3 partition(year='2018',month='03',day='21');load data local inpath '/hivedata/user.txt' into table part3 partition(year='2018',month='02',day='20');
檢視分割槽 show partition tablename;
1.新增分割槽(空)
alter table part1 add partition(dt='2018-03-27');
2.新增分割槽(帶資料)
alter table part5 add partition(dt='2018-03-27') location '/user/hive/warehouse/mydb1.db/part1/dt=2018-03-20';
3.新增多分割槽
alter table part5 add partition(dt='2018-03-26') location '/user/hive/warehouse/mydb1.db/part1/dt=2018-03-20'
partition(dt='2018-03-24') location '/user/hive/warehouse/qf1704.db/part1/dt=2018-03-21';
刪除單個分割槽
alter table part5 drop partition(dt=『2018-03-21』);
刪除多個分割槽
alter table part5 drop partition(dt=『2018-03-24』),partition(dt=『2018-03-26』);
Hive操作表分割槽
建立分割槽表語句,使用關鍵字partition a 單分割槽建表語句 create table table name id int,content string partitioned by dt string 單分割槽表,按天分割槽,在表結構增加了dt列。以dt為資料夾區分 b 雙分割槽建表語句 ...
Hive 分區分桶操作
在大資料中,最常用的一種思想就是分治,我們可以把大的檔案切割劃分成乙個個的小的檔案,這樣每次操作乙個小的檔案就會很容易了,同樣的道理,在hive當中也是支援這種思想的,就是我們可以把大的資料,按照每天,或者每小時進行切分成乙個個的小的檔案,這樣去操作小的檔案就會容易得多了。企業常見的分割槽規則 按天...
hive 分割槽 hive 分割槽概念 0323
1 hive 分割槽表 在hive select查詢中一般會掃瞄整個表內容,會消耗很多時間做沒必要的工作。有時候只需要掃瞄表中關心的一部分資料,因此建表時引入了partition概念。分割槽表指的是在建立表時指定的partition的分割槽空間。hive可以對資料按照某列或者某些列進行分割槽管理,所...