动态分区
前面我们学习了Hive 的分区分桶表,我们讲到了分区表中的分区字段可以是我们指定的字段——静态分区,也可以是数据表中的某些字段,这个怎么理解呢,例如我们有一个网站日志表,我们希望按照日志数据产生的时间将数据划分到不同的分区中去,而这个时候数据中的时间列就是我们的分区字段。
动态分区主要在我们需要插入数据到很多分区的时候使用,因为在静态分区的时候我们每次插入数据都需要指定一个分区,那么很多分区我们就需要写很多同样功能的插入sql,只是分区值不一样,例如让你将过去一年的数据按照时间以天为单位插入到分区表中去
动态分区调整
- 动态分区属性:设置为true表示开启动态分区功能(默认为false)hive.exec.dynamic.partition=true;
- 动态分区属性:设置为nonstrict,表示允许所有分区都是动态的(默认为strict)设置为strict,表示必须保证至少有一个分区是静态的hive.exec.dynamic.partition.mode=strict;
- 动态分区属性:每个mapper或reducer可以创建的最大动态分区个数hive.exec.max.dynamic.partitions.pernode=100;
- 动态分区属性:一个动态分区创建语句可