hive面試 Hive分割槽和分桶的區別

2021-10-12 18:41:35 字數 835 閱讀 1185

分割槽針對的是資料的儲存路徑,分割槽提供乙個隔離資料和優化查詢的便利方式。不過並不是所有的資料集都可形成合理的分割槽。

create table student_partitioned(score int , name string ,name string) partitioned by (age int) row format delimited fields terminated by '\t';
1.分桶針對的是資料檔案,分桶是將資料集分解成更容易管理的若干部分的另乙個技術。

2.相比於分割槽表,分桶表是對資料進行更細粒度的劃分,分桶表將整個資料內容按照某列屬性值的雜湊值進行區分,例如按照使用者id屬性分為三個桶,就是對使用者id屬性值的雜湊值對3取模運算,按照取模結果對資料分桶。

所以分桶的規則就是對分桶的字段進行取雜湊值,然後用該雜湊值除以桶的個數取餘數,餘數決定了該條記錄會被分到哪個桶中。

3.在物理結構上乙個桶對應乙個檔案,而分割槽表的分割槽只是乙個目錄,至於目錄下有多少資料時不確定的。

create table student_buck(id int ,name string) clustered by(id) into 4 buckets row format delimited fields terminated by '\t';
4.向分桶表中插入資料要使用insert overwrite table …若使用load data local inpath 這種方式即使設定了強制分桶也不起作用。

5.插入資料前需要設定屬性:

set hive.enforce.bucketing=true;

hive的分桶,和分割槽

開啟分桶模式 set hive.enforce.bucketing true 制定reduce個數是4 set mapreduce.job.reduces 4 建立乙個分桶表 create table stu buck sno int,sname string,string,sage int,sde...

Hive分割槽和分桶區別

一.定義上 分割槽 建立分割槽表 create table student id int,name string,age int,address string partitioned by dt string,type string 制定分割槽 row format delimited fields...

Hive分割槽和桶

smb 存在的目的主要是為了解決大表與大表間的 join 問題,分桶其實就是把大表化成了 小表 然後 map side join 解決之,這是典型的分而治之的思想。在聊 smb join 之前,我們還是先複習下相關的基礎概念。在hive select查詢中一般會掃瞄整個表內容,會消耗很多時間做沒必要...