hive的分割槽操作 一

2021-09-27 01:27:42 字數 2461 閱讀 4014

為什麼分割槽

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可以對資料按照某列或者某些列進行分割槽管理,所...