【发布时间】:2017-03-15 20:53:14
【问题描述】:
我为 Hive 项目编写了一个新的 UDF,但返回类型不是 DATE 对象,而是一个奇怪的结构。正确的返回类型是什么?
@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 逻辑。
-
您正在返回函数
Utils.getGoodDate的结果,而没有提供其代码、接口或相关链接,您真的希望得到答案吗?感谢上帝,这是谷歌。您可能看到的是 sun.util.calendar grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/… 的 JSON 表示。检查以下源代码示例github.com/apache/hive/tree/… -
github.com/apache/hive/blob/… 你给出的 URL 指向答案。
-
是的,这就是重点:-) 请添加答案