6、Hive数据仓库——Hive分桶

本文介绍了Hive分桶的概念及其作用,通过开启分桶开关并创建分桶表来实现数据的均匀分布,以解决MapReduce的数据倾斜问题。在实际操作中,通过CLUSTERED BY指定字段和BUCKETS数量创建分桶表,并使用INSERT INTO语句确保数据正确分布到各个桶中。分桶技术有助于提高查询效率和MapJoin操作。

Hive分桶

  分桶实际上是对文件(数据)的进一步切分,Hive默认关闭分桶。

  作用:在往分桶表中插入数据的时候,会根据 clustered by 指定的字段 进行hash分区 对指定的buckets个数 进行取余,进而可以将数据分割成buckets个数个文件,以达到数据均匀分布,可以解决Map端的“数据倾斜”问题,方便我们取抽样数据,提高Map join效率。

  分桶字段 需要根据业务进行设定。


开启分桶开关

set hive.enforce.bucketing=true;

建立分桶表

create table students_buks
(
    id bigint,
    name string,
    age int,
    gender string,
    clazz string
)
CLUSTERED BY (clazz) into 12 BUCKETS
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; 

往分桶表中插入数据

  直接使用load data 并不能将数据打散

// 直接使用load data 并不能将数据打散
load data local inpath '/usr/local/soft/data/students.txt' into table students_buks;

  需要使用下面这种方式插入数据,才能使分桶表真正发挥作用

// 需要使用下面这种方式插入数据,才能使分桶表真正发挥作用
insert into students_buks select * from students;

到底啦!关注靓仔学习更多的大数据知识。( •̀ ω •́ )✧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangzai2048

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值