Hive 分區分桶操作

2021-10-09 08:31:04 字數 2800 閱讀 3682

在大資料中,最常用的一種思想就是分治,我們可以把大的檔案切割劃分成乙個個的小的檔案,這樣每次操作乙個小的檔案就會很容易了,同樣的道理,在hive當中也是支援這種思想的,就是我們可以把大的資料,按照每天,或者每小時進行切分成乙個個的小的檔案,這樣去操作小的檔案就會容易得多了。

企業常見的分割槽規則:按天進行分割槽(一天乙個分割槽)

1、建立分割槽表語法

create table score

(s_id string,c_id string, s_score int

) partitioned by (month string) row format delimited fields terminated by '\t'

;

2、建立乙個錶帶多個分割槽
create table score2 (s_id string,c_id string, s_score int

) partitioned by (year string,month string,day string) row format delimited fields terminated by '\t'

;

3、載入資料到分割槽表中
load data local inpath '/export/servers/hivedatas/score.csv' into table score partition (month=

'201806'

);

4、載入資料到乙個多分割槽的表中去
load data local inpath '/export/servers/hivedatas/score.csv' into table score2 partition

(year=

'2018'

,month=

'06'

,day=

'01'

);

5、多分割槽聯合查詢使用union all來實現
select * from score where month =

'201806' union all select * from score where month =

'201806'

;1

6、檢視分割槽
show  partitions  score;
7、新增乙個分割槽
alter table score add partition

(month=

'201805'

);

8、同時新增多個分割槽
alter table score add partition

(month=

'201804'

)partition

(month =

'201803'

);

注意:新增分割槽之後就可以在hdfs檔案系統當中看到表下面多了乙個資料夾

9、刪除分割槽

alter table score drop partition

(month =

'201806'

);

特別強調:

分割槽字段絕對不能出現在資料庫表已有的字段中!

作用:將資料按區域劃分開,查詢時不用掃瞄無關的資料,加快查詢速度。

是在已有的表結構之上新新增了特殊的結構。

將資料按照指定的字段進行分成多個桶中去,說白了就是將資料按照字段進行劃分,可以將資料按照字段劃分到多個檔案當中去

1、開啟hive的桶表功能

set hive.enforce.bucketing=

true

;

2、設定reduce的個數
set mapreduce.job.reduces=

3;

3、建立桶表
create table course (c_id string,c_name string,t_id string) clustered by

(c_id) into 3 buckets row format delimited fields terminated by '\t'

;

桶表的資料載入,由於通標的資料載入通過hdfs dfs -put檔案或者通過load data均不好使,只能通過insert overwrite

建立普通表,並通過insert overwrite的方式將普通表的資料通過查詢的方式載入到桶表當中去

4、 建立普通表

create table course_common (c_id string,c_name string,t_id string) row format delimited fields terminated by '\t'

;

5、 普通表中載入資料
load data local inpath '/export/servers/hivedatas/course.csv' into table course_common;
6、通過insert overwrite給桶表中載入資料
insert overwrite table course select * from course_common cluster by

(c_id)

;

特別強調:

分桶字段必須是表中的字段。

分桶邏輯:

對分桶字段求雜湊值,用雜湊值與分桶的數量取餘,餘幾,這個資料就放在哪個桶內。

Hive分區分桶基本操作

重置hive 登入mysql root m mysql uroot p1 mysql drop database hive create database hive 修改資料庫編碼 alter database grant allon hive.to hive identified by 1 gra...

Hive分割槽 分桶

create table t user partition id int name string partitioned by country string row format delimited fields terminated by load data local inpath root h...

Hive分割槽 分桶

2 靜態分割槽 二 hive分桶 1.分割槽列的值將表劃分為乙個個的資料夾 2.查詢時語法使用 分割槽 列和常規列類似 3.查詢時hive會只從指定分割槽查詢資料,提高查詢效率 建立單級分割槽表 create table ifnot exists employee partition name st...