0
我为Hive项目编写了一个新的UDF,但返回类型不是DATE对象,而是一个奇怪的结构。什么是正确的退货类型?Hive的适当数据类型适用于UDF的DATE和TIMESTAMP
@Description(name = "udf_good_date", value = "_FUNC_(datestring):DATE", extended = "")
@UDFType(deterministic = true, stateful = false)
public class GoodDateAsDateUDF extends UDF {
public Date evaluate(String a) {
return Utils.getGoodDate(a);
}
}
尝一尝:
select default.udf_good_date('10/20/1983);
它奇怪给出:
+----------------------------------------------------------------------------------------------------------------------+--+
| _c0 |
+----------------------------------------------------------------------------------------------------------------------+--+
| {"fasttime":125733600000,"cdate":{"cachedyear":1983,"cachedfixeddatejan1":720259,"cachedfixeddatenextjan1":720624}} |
+----------------------------------------------------------------------------------------------------------------------+--+
认真吗? .... –
我切换到java.sql.Date和更多的功能正在工作。但是,java.sql.Timestamp没有解决Impala中可以使用Hive函数的Timestamp逻辑。 – Chris
你正在返回一个函数'Utils.getGoodDate'的结果而不提供它的代码,它的接口和一个相关的链接,你真的期望得到答案吗?感谢上帝,是Google。你可能看到的是sun.util.calendar的JSON表示http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/sun/util/calendar/BaseCalendar的.java。检查以下代码示例源https://github.com/apache/hive/tree/ff67cdda1c538dc65087878eeba3e165cf3230f4/ql/src/java/org/apache/hadoop/hive/ql/udf/generic –