大数据学习日志 - 分区表与分桶表的区别
1. 分区表
1.1 分区意义
为避免全表扫描,按照用户指定字段进行分区,分区字段可以是日期、地域、种类等具有标识意义的字段。
1.2 本质
提供将表分离为多个文件目录的方法,不同分区代表不同文件夹,同一分区的数据存储在同一文件夹中。只需要根据分区值找对应文件夹,扫描文件夹下的文件即可,为避免全表扫描。注意,分区表的字段不能是表中已经存在的字段,因为分区字段最终也会以虚拟字段的形式展示在表结构上。
2. 分桶表
2.1 分桶意义
让数据分解为若干个部分易于管理,可以减少join(联表)查询时笛卡尔积的数量,提高抽样查询的效率。
2.2 本质
分桶表的字段必须是表中已有的字段,分桶表需要使用间接方式才能把数据加载进去:insert + select。在join的时候,针对join的字段进行分桶,可以提高join的效率,减少笛卡尔积数量。
3. 总结
区别
- 分区表的字段不能是表中已有字段,分桶表字段必须是表中已有字段。
- 分区表提高查询效率,分桶表提高联表效率