【问题标题】:Proper datatypes for Hive DATE and TIMESTAMP for UDF用于 UDF 的 Hive DATE 和 TIMESTAMP 的正确数据类型
【发布时间】: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 hive bigdata


【解决方案1】:

当开源项目缺少文档时,需要访问实际源代码本身才能看到真正的答案。因此,关于各种基于时间的数据类型,最好阅读源代码中的代表性示例。这个特殊的类很好地说明了用法。

https://github.com/apache/hive/blob/ff67cdda1c538dc65087878eeba3e165cf3230f4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFHour.java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2021-08-29
    • 1970-01-01
    相关资源
    最近更新 更多