這篇具有很好參考價值的文章主要介紹了Hive為什么要分桶?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。
1.獲得更高的查詢處理效率
????????在
分區(qū)數(shù)量過于龐大
以至于可能導致文件系統(tǒng)崩潰時,或數(shù)據(jù)集
找不到合理的分區(qū)字段
時,我們就 需要
使用分桶
來解決問題了。
????????分區(qū)中的數(shù)據(jù)可以被進一步拆分成桶
,不同于分區(qū)對列直接進行拆分,桶往往使用列的哈希值對數(shù) 據(jù)打散,并分發(fā)到各個不同的桶中從而完成數(shù)據(jù)的分桶過程。
????????注意,hive使用對分桶所用的值進行hash,并用hash結果除以桶的個數(shù)做
取余運算
的方式來桶, 保證了每個桶中都有數(shù)據(jù),但每個桶中的數(shù)據(jù)條數(shù)
不一定相等
。
????????如果另外一個表也按照同樣的規(guī)則分成了一個個小文件。
兩個表join的時候
,就不必要掃描整個表,
只需要匹配相同分桶的數(shù)據(jù)即可,從而
提升效率。
????????在數(shù)據(jù)量足夠大的情況下,分桶比分區(qū)有更高的查詢效率。
(
2.數(shù)據(jù)采樣
????????在真實的大數(shù)據(jù)分析過程中,由于數(shù)據(jù)量較大,
開發(fā)和自測的過程比較慢
,嚴重影響系統(tǒng)的開發(fā)進 度。此時就可以使用分桶來進行數(shù)據(jù)采樣。采樣使用的是一個
具有代表性的查詢結果
而不是全部結果, 通過對采樣數(shù)據(jù)的分析,來達到
快速開發(fā)和自測
的目的,節(jié)省大量的研發(fā)成本。
3.分桶和分區(qū)的區(qū)別
????????1. 分桶和分區(qū)兩者不干擾,
可以把分區(qū)表進一步分桶
;
????????2. 分桶對數(shù)據(jù)的處理比分區(qū)
更加細粒度化
:分區(qū)針對的是數(shù)據(jù)的存儲路徑;
分桶針對的是數(shù)據(jù) 文件
;
????????3. 分桶是按照列的哈希函數(shù)進行分割的,相對
比較平均
;而分區(qū)是按照列的值來進行分割的, 容易造成
數(shù)據(jù)傾斜
。
4.?文本數(shù)據(jù)處理
????????注意
:對于分桶表,
不能使用load data的方式進行數(shù)據(jù)插入操作
,因為load data導入的數(shù)據(jù)不會 有分桶結構。
????????如何避免針對桶表使用load data插入數(shù)據(jù)的誤操作呢?
--限制對桶表進行l(wèi)oad操作
set hive.strict.checks.bucketing = true;
????????也可以在CM的hive配置項中修改此配置,當針對桶表執(zhí)行l(wèi)oad data操作時會報錯。
????????那么對于文本數(shù)據(jù)如何處理呢? ?文章來源地址http://www.zghlxwxcb.cn/news/detail-450470.html
????????(1. 先創(chuàng)建
臨時表
,通過load data將txt文本導入臨時表。
--創(chuàng)建臨時表
create table temp_buck(id int, name string)
row format delimited fields terminated by '\t';
--導入數(shù)據(jù)
load data local inpath '/tools/test_buck.txt' into table temp_buck;
????????(2. 使用
insert select
語句間接的把數(shù)據(jù)從臨時表導入到分桶表。
--啟用桶表
set hive.enforce.bucketing=true;
--限制對桶表進行l(wèi)oad操作
set hive.strict.checks.bucketing = true;
--insert select
insert into table test_buck select id, name from temp_buck;
--分桶成功
文章來源:http://www.zghlxwxcb.cn/news/detail-450470.html
到了這里,關于Hive為什么要分桶?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!
本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!