分区表:将数据按照分区字段拆分存储的表,在hdfs中以文件夹的形式分别存放不同分区的数据,可以避免全表查询,提高查询效率。
动态分区:hive通过设置hive.exec.dynamici.partition=true开启动态分区。
可以在插入数据时根据表中某字段值决定分区,当分区字段完全由变量决定时称为动态分区,若有常量限制则称为混合分区,若完全由常量决定分区时称为静态分区。
分桶表:根据分桶字段hash值分组拆分数据的表,在hdfs中表现为将单个的数据文件拆分为多个文件。
总结:分区字段的每个值都对应一个文件夹和一个分区文件,而分桶字段则是多个值对应一个桶文件。
如果同时使用分区和分桶,则会先按照分区划分文件,再对每个文件按照分桶进行拆分。