在大資料中,最常用的一種思想就是分治,我們可以把大的檔案切割劃分成乙個個的小的檔案,這樣每次操作乙個小的檔案就會很容易了,同樣的道理,在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...