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的主要内容,如果未能解决你的问题,请参考以下文章

Hive之分区以及bucket分桶认识理解

Hive(10):Hive分桶表

Hive中的分桶

Hive分桶小例

Hive Bucketing:不同列值的数量大于分桶数量

Hive篇--相关概念和使用二