配置单元的Unix\u时间戳不在Shell脚本中工作

配置单元的Unix\u时间戳不在Shell脚本中工作,shell,hive,hiveql,Shell,Hive,Hiveql,我正在运行配置单元查询 hive-hiveconf prvDate=$prvDate-S-e“从员工中选择max(ID),其中unix_时间戳(日期,'dd-MM-yyyy')>unix_时间戳('${hiveconf:prvDate}','dd-MM-yyyy')” 它正在返回NULL。PRV日期为2017年12月15日 但是当我在Hive中运行相同的脚本时 select max(ID) from Employee where unix_timestamp(date,'dd-MM-yyyy')

我正在运行配置单元查询

hive-hiveconf prvDate=$prvDate-S-e“从员工中选择max(ID),其中unix_时间戳(日期,'dd-MM-yyyy')>unix_时间戳('${hiveconf:prvDate}','dd-MM-yyyy')”

它正在返回NULL。PRV日期为2017年12月15日

但是当我在Hive中运行相同的脚本时

select max(ID) from Employee where unix_timestamp(date,'dd-MM-yyyy') > unix_timestamp('15-12-2017','dd-MM-yyyy')

我能看到结果。有人能帮忙吗

如果您运行的配置单元中包含内嵌SQL的shell脚本,您不需要传递-hiveconf变量,请改用shell替换

示例(shell):

输出: 1483257600

仅在执行SQL脚本文件时使用--hiveconf:

hive --hiveconf bla="$bla" -f myscript.hql

这是因为您正在调用hiveconf变量,请更改名称,它应该可以工作

hive -hiveconf prvDate=$prvDate -S -e "select max(ID) from Employee where unix_timestamp(date,'dd-MM-yyyy') > unix_timestamp('${hiveconf:prvDate}','dd-MM-yyyy')"

阅读以下内容:您应该使用${hiveconf:val}而不是prvDate,不是吗?很抱歉,我使用了prvDate而不是val。
hive -hiveconf prvDate=$prvDate -S -e "select max(ID) from Employee where unix_timestamp(date,'dd-MM-yyyy') > unix_timestamp('${hiveconf:prvDate}','dd-MM-yyyy')"