首页 > 其他 > 详细

Hive-分区、分桶

时间:2020-12-27 21:16:14      阅读:25      评论:0      收藏:0      [点我收藏+]

Hive-分区、分桶

分桶(bucket)

对某一列取哈希值,对桶的个数求模取余,根据余数决定该条记录进入哪一个桶

场景:小表关联大表时效果明显(Map Side Join),会把小表数据通过DistributedCache分发到各个Map Side,然后加载到内存和每一个Map任务处理的大表进行JOIN,这样就不必要去做Reduce JOINJOIN时是按照桶来JOIN的,大大减少了JOIN的数量

不能修改bucket列的值,否则会报以下错误:FAILED:SemanticException [Error 10302]:Updating values of bucketing columns is notsupported. Column id.

示例

create table t1(id int , name string) clustered by (id) into 8 buckets stored as orc tblproperties (‘transactional‘=‘true‘);

关键字clustered声明划分桶的列和桶的个数,这里以id来划分桶,划分8个桶。Hive会计算id列的hash值再以桶的个数取模来计算某条记录属于哪个桶。

分区(partition)

分区就是对某列有相同的数据或者某一个数据范围的数据进行分类,在查询时就可以针对分区查询,不必进行全表扫描

对分区表执行insert时,表名后要跟partition子句。

Hive-分区、分桶

原文:https://www.cnblogs.com/EnzoDin/p/14198472.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!