Hive 分桶 Bucket
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive 分桶 Bucket相关的知识,希望对你有一定的参考价值。
1. 概述
通常 Hive 中的分区功能提供了一种将 Hive 表数据分隔成多个文件/目录的方法。当只有有限个分区,分区大小差不多大情况下,分区会产生不错的效果。但在有些情况下并不能如我们所愿,比如,当我们根据国家对表进行分区时,一些较大的国家会有较大的分区(例如:4-5个国家就占总数据的70-80%),然而一些小国家分区会比较小(剩余的所有国家可能只占全部数据的20-30%)。
Hive 中的分区提供了一个隔离数据和优化查询的便利方式,不过并非所有的数据都可形成合理的分区,例如,上面的情形。在这种情形下分区并不理想,为了解决分区的这个问题,Hive 引入分桶的概念。Hive 中的分桶是另一种将数据切分为更小片段的方式。分区就是一个目录,在分桶中,每个桶都是保存实际数据的一个文件(一个桶对应一个文件)。
将表(或者分区)组织成分桶有两个主要的原因:
- 第一是获得更高的查询效率。桶为表加上了额外的结构。Hive 在处理有些查询时能够利用这个结构。具体而言,Join 两个在相同列上划分分桶的表,可以获得更高的效率。
- 第二是使抽样更高效。在处理大规模数据集时,在开发和修改查询的阶段,如果能在数据集的一小部分数据上运行查询,会带来很多方便。
分桶具有如下特征:
- 分桶基于对分桶列值进行哈希并将结果除以桶的个数取余数。哈希函数取决于分桶列的类型。
- 具有相同
以上是关于Hive 分桶 Bucket的主要内容,如果未能解决你的问题,请参考以下文章