二 Hive分桶

二.Hive分桶

1.创建分桶表

create table t_buck (id string ,name string)
clustered by (id) //根据id分桶
sorted by (id) //根据id排序
into 4 buckets //分为4个桶
row format delimited
fields terminated by ',';

向创建的分桶表中插入数据需要是已分桶且排序的。通常是将其他表查询的结果插入桶中才会执行分桶操作。分桶的原理和分区原理差不多,类似HashPartitioner。

2.向分桶表中导入其他表查询后的数据

select id ,name from t_shizhan01 distribute by (id) sort by (id);

或者

insert into t_buck 
select id ,name from t_shizhan01 cluster by (id);

可以使用distribute by(id) sort by(id asc)   或是排序和分桶的字段相同的时候使用Cluster by(字段)

注意使用cluster by  就等同于分桶+排序(sort)

3.设置变量,设置分桶为true, 设置reduce数量是分桶的数量个数  

set hive.enforce.bucketing = true;
set mapreduce.job.reduces=4;

设置是否分桶及设置reduce的数量。在创建表的时候设置的分桶数量要和此处设置的相匹配,如果此处不设置reduce数量和是否分桶,表对应的空间中只会有一个桶。

执行插入操作后hdfs目录如下:

 

转载于:https://www.cnblogs.com/zhaobingqing/p/7988820.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值