想完成类似这样一个需求:insert overwrite table ... partiton(dt=date_sub('2019-03-13',2))
当然这样子是行不通的,partition后面那个括号里是不能用函数的,怎么办呢?
网上一顿狂搜,找到了一个解决办法!动态分区
上两个链接就懂啦:
https://stackoverflow.com/questions/44886583/parameter-passing-to-partition-is-not-working-in-hive
https://blog.csdn.net/qq_26442553/article/details/80382174
总之就是可以执行了,方法如下:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert into table ts.dyy_test partition(dt)
select a,b,date_sub('2019-03-23',2) dt from asdf.sldfjkskdjfllsjkkf
where dt='2019-03-15';