10

我想了解 UDF WeekOfYear 以及它如何从第一周开始。我不得不人为地打一个表并运行查询。我不想打表并计算值。其次我可以看一下UDF源代码吗?

SELECT weekofyear
('12-31-2013')
from a;
4

4 回答 4

6

自 Hive 0.13.0 以来,您不需要表来测试 UDF。

看到这个 Jira:HIVE-178 SELECT without FROM 应该假设一个没有列的单行表

测试:

hive> SELECT weekofyear('2013-12-31');

结果:

1

源代码(master 分支)在这里:UDFWeekOfYear.java

于 2017-10-09T17:44:17.887 回答
1

如果您是 Java 开发人员,您可以编写 Junit 测试用例并测试 UDF。

您可以在grepcode中搜索所有 hive 内置函数的源代码。

http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hive/hive-exec/1.0.0/org/apache/hadoop/hive/ql/udf/UDFWeekOfYear.java

于 2015-06-01T07:00:37.867 回答
0

我认为在 Hive 中执行 UDF 而不打表是不可能的。甚至 Hive 开发人员也在 UDF 测试中脱颖而出

要使查询运行得更快,您可以:

  1. 创建只有一行的表并在此表上运行 UDF 查询
  2. 以本地模式运行 Hive。

Hive 源代码位于此处UDFWeekOfYear来源在这里

于 2014-01-09T09:31:04.773 回答
0

您应该能够使用任何至少有一行的表来测试功能。这是一个使用一些自定义函数执行工作并输出字符串结果的示例。

将 anytable 替换为实际的表。

SELECT ST_AsText(ST_Intersection(ST_Polygon(2,0, 2,3, 3,0), ST_Polygon(1,1, 4,1, 4,4, 1,4))) 从anytable LIMIT 1;

蜂巢结果:

好的

多边形 ((2 1, 2.6666666666666665 1, 2 3, 2 1))

耗时:0.191 秒,提取:1 行

蜂巢>

于 2015-10-01T02:36:57.733 回答