我们能否定义一种方法,用以决定是否应该进行分组或分区?
答案 0 :(得分:3)
通常,hive中的分区提供了一种将hive表数据分隔为多个文件/ directorys的方法。但是,分区可以提供有效的结果,
但是在所有情况下都可能无法实现这一点,例如在基于地理位置(如国家/地区)对表格进行分区时,一些较大的国家/地区将拥有较大的分区(例如:4-5个国家/地区本身占总数据的70-80%)小国家的数据将创建小分区(世界上所有国家可能仅占总数据的20-30%)。因此,在这些情况下,分区将不是理想的。
为了克服过度分区的问题,Hive提供了Bucketing概念,这是另一种将表数据集分解为更易于管理的部分的技术。
Bucketing概念基于(在Bucketed列上的散列函数)mod(根据桶的总数).hash_function取决于bucketing列的类型。
具有相同分段列的记录将始终存储在同一个存储桶中,物理上每个存储桶只是表目录中的文件,并且存储桶编号是从1开始的。
暂停 效果很好。当分区字段的基数 不太高 时, 分区 效果最佳。