首先,我们看一下动态分区和静态分区的区别和使用场景
- 静态分区:
定义:对于静态分区,从字面就可以理解:表的分区数量和分区值是固定的。静态分区需要手动指定,列是在编译时期通过用户传递来决定的。
应用场景:需要提前知道所有分区。适用于分区定义得早且数量少的用例,不适用于生产。
- 动态分区:
定义:是基于查询参数的位置去推断分区的名称,只有在 SQL 执行时才能确定,会根据数据自动的创建新的分区。
应用场景:有很多分区,无法提前预估新分区,动态分区是合适的,一般用于生产环境。
Hive动态分区插入方式有很多种,我们看官方文档的一段描述:点击直达链接
In the dynamic partition inserts, users can give partial partition specifications, which means just specifying the list of partition column names in the PARTITION clause. The column values are optional. If a partition column value is given, we call this a static partition, otherwise it is a dynamic partition. Each dynamic partition column has a corresponding input column from the select statement. This means that the dynamic partit