hive分桶表實(shí)踐

一、建表:分區(qū)分桶表,對(duì)日期分區(qū),再對(duì)id分4個(gè)桶

create table t1(id int)

partitioned by (statis_date string)

clustered by(id)

into 4 buckets;

二、設(shè)置強(qiáng)制分桶

set hive.enforce.bucketing=true;

三、執(zhí)行插入語句,插入1到8這幾個(gè)id

insert into t1 partition(statis_date='20211101')

select * from (

select 1 id union all

select 2 id union all

select 3 id union all

select 4 id union all

select 5 id union all

select 6 id union all

select 7 id union all

select 8 id ) tmp

cluster by id;

四、效果


可以看到當(dāng)前已經(jīng)自動(dòng)分成4個(gè)文件,符合4個(gè)桶的設(shè)置。


查看文件0,可以看到分別是4和8,也就是對(duì)4和8進(jìn)行哈希散列后得到相同的值。

五、表抽樣

-- 語法:

select columns from table tablesample(bucket x out of y on column);

-- x:表示從第幾個(gè)分桶進(jìn)行抽樣

-- y:表示每隔幾個(gè)分桶取一個(gè)分桶,必須為y的整數(shù)倍或者因子

例如下面從對(duì)表從桶1開始查,每次間隔1個(gè)桶,得到桶1和桶3的全部數(shù)據(jù):

select id,statis_date from t1 tablesample(bucket 1 out of 2 on id);


其中id的值4和8是分桶1的,2和6是分桶3的。

六、作用

1、抽樣查詢

2、map-side join,兩個(gè)對(duì)相同字段做了同樣分桶規(guī)則的表關(guān)聯(lián),可以實(shí)現(xiàn)在map端join,提高效率。

3、控制文件數(shù)量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 為提升hive數(shù)據(jù)的查詢和寫入性能, hive提供了分區(qū)表機(jī)制。hive每個(gè)表格可以指定多個(gè)分區(qū)key, 這些分區(qū)...
    wujustin閱讀 6,008評(píng)論 0 4
  • 1.在hive中可以執(zhí)行shell命令 用戶可以直接在hive中執(zhí)行shell命令,只需要使用!開始,使用(;)結(jié)...
    Tim在路上閱讀 546評(píng)論 0 0
  • 一、Hive基本概念 Hive 是基于 Hadoop 的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提...
    CJ21閱讀 1,866評(píng)論 0 13
  • 概述 目前,在利用hive建設(shè)數(shù)據(jù)倉(cāng)庫(kù)的過程中,總會(huì)遇見分區(qū)分桶的,跟傳統(tǒng)的DBMS系統(tǒng)一樣,通過表分區(qū)能夠在特定...
    原上野閱讀 3,312評(píng)論 0 0
  • 三,分區(qū)表 1.靜態(tài)分區(qū) CREATE TABLE IF NOT EXISTS salgrade2 (GRADE ...
    JayWolf閱讀 737評(píng)論 0 0

友情鏈接更多精彩內(nèi)容