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

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

什么是分桶表?如何創建分桶表?

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

好口碑IT培訓

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

由于分桶表是基于內/外部表創建,所以分桶表的創建方式和創建數據表的方式類似。接下來,在虛擬機Node_03中使用Hive客戶端工具Beeline,遠程連接虛擬機Node_02的HiveServer2服務操作Hive,在數據庫hive_database中創建分桶表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進行分桶,每個桶中的數據按照列age進行降序(DESC)排序,指定桶的個數為3。

注意:

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

(2)分桶表只能根據一列進行分桶。

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

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

0 分享到:
和我們在線交談!
国产免费观看黄A片又黄又硬