hive分桶管理
阿新 • • 發佈:2018-12-31
分桶:按照使用者建立表時指定的分桶欄位進行hash雜湊多個檔案
1.hive分桶的原理
跟MR中的HashPartitioner的原理一模一樣
MR中:按照key的hash值去模除以reductTask的個數
Hive中:按照分桶欄位的hash值去模除以分桶的個數
2.hive分桶的作用
好處:
1、方便抽樣
2、提高join查詢效率
3.hive分桶和分割槽的區別
分桶表和分割槽表的 桶數 和 分割槽數的 決定機制:分桶表的個數:由使用者的HQL語句所設定的reduceTask的個數決定
表的分割槽的個數:也能由使用者自定義指定。也能由程式自動生成, 分割槽是可以動態增長的
分桶表和分割槽表的個數的區別:
分桶表是一經決定,就不能更改,所以如果要改變桶數,要重新插入分桶資料
分割槽數是可以動態增長的
log日誌
一天存一個分割槽
分桶表和分割槽表中資料的表現:
1、分桶表中的每個分桶中的資料可以有多個key值
2、分割槽表中的每個分割槽只有一個 key值
4.hive分桶的操作
首先建立一個分桶的空表,注意:是分桶的空表
然後建立個臨時表,往臨時表匯入資料
然後在從臨時表中分桶查詢出來的資料insert到分桶的空表裡
4.1建立分桶表
create table bck_student(id int,name string,sex string, age int,department string) clustered by(sex) into 2 buckets row format delimited fields terminated by ",";4.2建立臨時表並匯入資料
create table student(id int,name string,sex string, age int,department string) row format delimited fields terminated by ",";load data local inpath "/home/hadoop/student.dat" into table student;
select * from sutdent;