问题陈述
我创建了以下内容UserDefinedFunction
以获取yesterday's date
我想要的格式,因为我将从查询中将格式传递给下面的方法。
public final class YesterdayDate extends UDF {
public String evaluate(final String format) {
DateFormat dateFormat = new SimpleDateFormat(format);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
return dateFormat.format(cal.getTime()).toString();
}
}
因此,每当我尝试通过将 jar 添加到类路径并创建临时函数来运行如下查询时yesterdaydate
,我总是得到零结果 -
hive> create temporary function yesterdaydate as 'com.example.hive.udf.YesterdayDate';
OK
Time taken: 0.512 seconds
以下是我正在运行的查询 -
hive> SELECT * FROM REALTIME where dt= yesterdaydate('yyyyMMdd') LIMIT 10;
OK
而且我总是得到零结果,但该表中的数据是 8 月 5 日的。
我做错了什么?任何建议将不胜感激。
如果今天的日期是 8 月 6 日,则查询应该是这样的-然后使用上述用户定义的函数查询将如下所示-
SELECT * FROM REALTIME where dt= '20120805' LIMIT 10;
注意:- 由于我正在使用它,Hive 0.6
所以它不支持变量替换,所以我不能hiveconf
在这里使用,并且上表已在dt(date) column
.