教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

什么是分桶表?如何創(chuàng)建分桶表?

更新時間:2023年04月26日16時43分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

Hive的分區(qū)可以將整體數(shù)據(jù)劃分成多個分區(qū),從而優(yōu)化查詢,但是并非所有的數(shù)據(jù)都可以被合理分區(qū),會出現(xiàn)每個分區(qū)數(shù)據(jù)大小不一致的問題,有的分區(qū)數(shù)據(jù)量很大,有的分區(qū)數(shù)據(jù)量卻很小,這就是常說的數(shù)據(jù)傾斜。為了解決分區(qū)可能帶來的數(shù)據(jù)傾斜問題,Hive提供了分桶技術(shù),Hive中的分桶是指定分桶表的某一列,讓該列數(shù)據(jù)按照哈希取模的方式隨機(jī)、均勻地分發(fā)到各個桶文件中。本節(jié)詳細(xì)講解創(chuàng)建分桶表的相關(guān)操作。

由于分桶表是基于內(nèi)/外部表創(chuàng)建,所以分桶表的創(chuàng)建方式和創(chuàng)建數(shù)據(jù)表的方式類似。接下來,在虛擬機(jī)Node_03中使用Hive客戶端工具Beeline,遠(yuǎn)程連接虛擬機(jī)Node_02的HiveServer2服務(wù)操作Hive,在數(shù)據(jù)庫hive_database中創(chuàng)建分桶表clustered_table,具體命令如下。

CREATE TABLE IF NOT EXISTS
hive_database.clustered_table(
id STRING,
name STRING,
gender STRING,
age INT,
dept STRING
)
CLUSTERED BY (dept) SORTED BY (age DESC) INTO 3 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY'\n'
STORED AS textfile
TBLPROPERTIES("comment"="This is a clustered table");

上述命令中,指定分桶表clustered_table按照列dept進(jìn)行分桶,每個桶中的數(shù)據(jù)按照列age進(jìn)行降序(DESC)排序,指定桶的個數(shù)為3。

注意:

(1)分桶個數(shù)是指在HDFS中分桶表的存儲目錄下會生成相應(yīng)分桶個數(shù)的小文件。

(2)分桶表只能根據(jù)一列進(jìn)行分桶。

(3)分桶表可以與分區(qū)表同時使用,分區(qū)表的每個分區(qū)下都會有指定分桶個數(shù)的桶。

(4)分桶表中指定分桶的列可以與排序的列不相同。

0 分享到:
和我們在線交談!