2017-03-15 76 views
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}} | 
+----------------------------------------------------------------------------------------------------------------------+--+ 
+0

认真吗? .... –

+0

我切换到java.sql.Date和更多的功能正在工作。但是,java.sql.Timestamp没有解决Impala中可以使用Hive函数的Timestamp逻辑。 – Chris

+1

你正在返回一个函数'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 –

回答

相关问题