java—适合于配置单元日期和udf时间戳的数据类型

xqkwcwgp  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(359)

我为一个配置单元项目编写了一个新的自定义项,但返回类型不是日期对象,而是一个奇怪的结构。正确的返回类型是什么?

  1. @Description(name = "udf_good_date", value = "_FUNC_(datestring):DATE", extended = "")
  2. @UDFType(deterministic = true, stateful = false)
  3. public class GoodDateAsDateUDF extends UDF {
  4. public Date evaluate(String a) {
  5. return Utils.getGoodDate(a);
  6. }
  7. }

试一试:

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

奇怪的是:

  1. +----------------------------------------------------------------------------------------------------------------------+--+
  2. | _c0 |
  3. +----------------------------------------------------------------------------------------------------------------------+--+
  4. | {"fasttime":125733600000,"cdate":{"cachedyear":1983,"cachedfixeddatejan1":720259,"cachedfixeddatenextjan1":720624}} |
  5. +----------------------------------------------------------------------------------------------------------------------+--+
pxy2qtax

pxy2qtax1#

当开源项目缺少文档时,需要访问实际的源代码本身才能看到真正的答案。所以对于各种基于时间的数据类型,最好阅读源代码中的代表性示例。这个特殊的类很好地说明了这个用法。
https://github.com/apache/hive/blob/ff67cdda1c538dc65087878eeba3e165cf3230f4/ql/src/java/org/apache/hadoop/hive/ql/udf/udfhour.java

相关问题