我们如何在不引用表格的情况下测试HIVE功能

时间:2014-01-08 23:00:41

标签: sql hive hiveql

我想了解UDF WeekOfYear以及它如何从第一周开始。我不得不人为地撞到桌子然后跑 查询。我想不要碰到桌子并计算价值。其次,我可以看一下UDF源代码吗?

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

4 个答案:

答案 0 :(得分:3)

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

见这个Jira:HIVE-178 SELECT without FROM should assume a one-row table with no columns

<强>测试

numbers2words(50000000000000)

<强>结果:

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

我不认为在Hive中可以在没有命中表的情况下执行UDF。 甚至是Hive开发人员hit the table在UDF测试中。

为了让查询更快地运行,您可以:

  1. 创建只包含一行的表并在此表上运行UDF查询
  2. 以本地模式运行Hive。
  3. Hive源代码位于hereUDFWeekOfYear来源为here

答案 3 :(得分: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)))FROM anytable LIMIT 1;

HIVE Resuluts:

POLYGON((2 1,26666666666666665 1,2 3,2))

所用时间:0.191秒,提取:1行

蜂房&GT;