1.场景
在Hive中,插入数据时可以指定动态分区,如果通过partition(day_partition)指定动态分区,而实际的select语句是直接把这个属性值写死了
(如‘2022-10-13’),就可以不需要指定hive变量set hive.exec.dynamic.partition=true
2.动态分区与静态分区冲突
如上图,我们明明指定了动态分区,但查询时写死,hive会自动转化为静态分区
但是如果我们手动指定set hive.exec.dynamic.partition=true
,那Hive就无法转为静态分区,就会造成不匹配的现象,编译结束之后压根不会执行
2.1看下日志
如果加了动态分区参数,几秒钟就结束了,而数据肯定是没有的
2.2不是缓存的原因
这个很容易会想到是不是hive缓存的问题,但是把参数从12号修改到13号,仍然出现这样的情况
3.小结
使用set hive.exec.dynamic.partition=true
时必须要保证自己的查询语句冗余字段不能写死