教育行业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 分享到:
和我们在线交谈!