Hive分桶
分桶是将数据分解成更容易管理的若干部分的一个技术,比分区有着更为细粒度的数据范围划分.
为什么要进行分桶呢?
1**. 利用分桶表,我们能获得更高效的查询处理效率.**
当分区数量过于庞大以至于可能导致文件系统崩溃时,或者我们找不到合理的分区字段时,可以考虑使用分桶表来解决问题.
同时,分区与分桶并不冲突,可以对分区后的数据进一步进行分桶.分区针对的是对文件的存储路径进行划分,进而分成一个个不同的文件夹,这样的数据是容易造成数据倾斜的.而分桶的原理是按照哈希值对数据打散,并分发到各个不同的桶中从而完成数据的分桶过程,数据分布比较均匀.
注意,hive使用对分桶所用的值进行hash,并用hash结果除以桶的个数做取余运算的方式来分桶,保证了每个桶中都有数据,但每个桶中的数据条数不一定相等。
如果另外一个表也按照同样的规则分成了一个个小文件。两个表join的时候,就不必要扫描整个表,只需要匹配相同分桶的数据即可,从而提升效率。
在数据量足够大的情况下,分桶比分区有更高的查询效率。
2. 数据的采集
在真实的大数据分析过程中,由于数据量较大,开发和自测的过程比较慢,严重影响系统的开发进度。此时就可以使用分桶来进行数据采样。采样使用的是一个具有代表性的查询结果而不是全部结果,通过对采样数据的分析,来达到快速开发和自测的目的,节省大量的研发成本。
具体的操作:
1**. 创建分桶表**