2016-09-16 131 views
0

我们能否定义一种方法来确定是否应该采用分区或分区?配置单元中的分区和分区之间的比较

+4

可能的重复[Hive中的分区和分区表之间的区别?](http://stackoverflow.com/questions/19128940/what-is-the-difference-between-partitioning-and-bucketing-一个表功能于蜂房) –

回答

3

通常在配置单元中的分区提供了一种将配置单元表数据分隔成多个文件/目录的方法。但分区提供了有效的结果时,

  • 有有限数量的分区
  • 相比较同等大小的分区

但这可能无法在所有情况下,当分区我们的表像基于地理位置像一些国家,一些较大的国家将会有大的分区(例如:4-5个国家本身占总数据的70-80%),小国家的数据将创建小分区(剩下的所有国家可能只贡献20-30所有数据的百分比)。因此,在这些情况下分区将不理想。
为了解决分区过度的问题,Hive提供Bucketing概念,这是将表数据集分解为更易管理的部分的另一种技术。 Bucketing概念基于(bucketed列上的哈希函数)mod(按桶的总数).Hash_function取决于bucketing列的类型。
具有相同分段列的记录将始终存储在同一个存储桶中,并且物理上每个存储桶只是表目录中的一个文件,并且存储桶编号基于1。

桶装效果很好,当现场有高基数和数据桶之间平均分配。 分区当分区字段的基数为不太高时效果最好

相关问题