博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive的桶表
阅读量:3958 次
发布时间:2019-05-24

本文共 638 字,大约阅读时间需要 2 分钟。

什么是桶表

在前面,我们讲到了内部表和外部表,以及使用分区表对数据进行细分管理。其实对于每一个表或者分区,Hive还可以进行更为细颗粒的数据细分划分和管理,也就是桶(Bucket)。Hive也是针对某一列进行桶的组织,Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。

采用桶表的理由

把表(或者分区)组织成桶(Bucket)有两个理由:

(1)更高的查询效率:桶为表加上额外结构,链接相同列划分了桶的表,可以使用map-side join更加高效。对于JOIN操作两个表有一个相同的列,如果对这两个表都进行了桶操作。那么将保存相同列值的桶进行JOIN操作就可以

(2)更高的取样效率:没有分区的话需要扫描整个数据集

总结

桶的概念就是MapReduce的分区的概念,两者完全相同。桶则是按照数据内容的某个值进行分桶,把一个大文件散列称为一个个小文件。物理上每个桶就是目录里的一个文件,一个作业产生的桶数量和reduce任务个数相同。

而分区表代表了数据的仓库,也就是文件夹目录。每个文件夹下面可以放不同的数据文件。通过文件夹可以查询里面存放的文件。但文件夹本身和数据的内容毫无关系。

 

这些小文件可以单独排序。如果另外一个表也按照同样的规则分成了一个个小文件。两个表join的时候,就不必要扫描整个表,只需要匹配相同分桶的数据即可。效率当然大大提升。

同样,对数据抽样的时候,也不需要扫描整个文件。只需要对每个分区按照相同规则抽取一部分数据即可。

转载地址:http://vsazi.baihongyu.com/

你可能感兴趣的文章
深入Java集合学习系列(一)
查看>>
深入Java集合学习系列(一)
查看>>
深入Java集合学习系列(二):
查看>>
图解Spring AOP
查看>>
性能调优之Weblogic调优
查看>>
性能调优之性能参数指标
查看>>
POJ3009---冰壶游戏(深搜剪枝+回溯)
查看>>
POJ3669---跳炸弹(广搜)
查看>>
POJ---1384Piggy-Bank (完全背包+装满问题)
查看>>
并查集基础知识
查看>>
POJ1182---食物链(带权并查集~技巧性超强的解法)
查看>>
POJ2492---A Bug's Life(做完食物链,再秒这个)
查看>>
POJ2063---Investment(完全背包)
查看>>
POJ1458---(最长公共子序列最基础题)
查看>>
POJ3356---(最长公共子序列)
查看>>
二叉树基础知识大全(核心理解遍历)
查看>>
03-树1 树的同构(25 分) 2017秋 数据结构 陈越、何钦铭
查看>>
04-树4 是否同一棵二叉搜索树(25 分)---陈越、何钦铭-数据结构-2017秋
查看>>
表达式求值(C实现,实现多括号,浮点数)---栈的实现以及运用。
查看>>
有序链表的合并(数据结构---单链表)
查看>>