2017-03-15 5 views
0

Ich schrieb eine neue UDF für ein Hive-Projekt, aber der Rückgabetyp ist kein DATE-Objekt, sondern eine ungerade Struktur. Was ist der korrekte Rückgabetyp?Richtige Datentypen für Hive DATE und TIMESTAMP für UDF

@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); 
    } 

} 

Versuch es:

select default.udf_good_date('10/20/1983); 

Es gibt seltsam:

+----------------------------------------------------------------------------------------------------------------------+--+ 
|               _c0               | 
+----------------------------------------------------------------------------------------------------------------------+--+ 
| {"fasttime":125733600000,"cdate":{"cachedyear":1983,"cachedfixeddatejan1":720259,"cachedfixeddatenextjan1":720624}} | 
+----------------------------------------------------------------------------------------------------------------------+--+ 
+0

Ernsthaft? .... –

+0

Ich wechselte zu java.sql.Date und mehr Funktionalität funktioniert. Java.sql.Timestamp adressierte jedoch nicht die Timestamp-Logik in Impala, die Hive-Funktionen verwenden kann. – Chris

+1

Sie geben das Ergebnis einer Funktion 'Utils.getGoodDate' zurück, ohne ihren Code, ihre Schnittstelle oder einen relevanten Link anzugeben, und Sie erwarten ernsthaft, eine Antwort zu erhalten? Gott sei Dank ist das Google. Was Sie wahrscheinlich sehen, ist die JSON-Darstellung eines sun.util.calendar http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/sun/util/calendar/BaseCalendar .Java. Überprüfen Sie die folgende Quelle für Codebeispiele https://github.com/apache/hive/tree/ff67cdda1c538dc65087878eeba3e165cf3230f4/ql/src/java/org/apache/hadoop/hive/ql/udf/generic –

Antwort