gpt4 book ai didi

java - Hive 中的自定义 UserDefinedFunction

转载 作者:可可西里 更新时间:2023-11-01 16:34:23 26 4
gpt4 key购买 nike

问题陈述

我创建了下面的 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) 列

最佳答案

SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()-1*24*60*60,'%Y%m%d');

关于java - Hive 中的自定义 UserDefinedFunction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com