2015-10-13 51 views
0

我一直在撞墙的一段时间,现在我已经将如何获得MS SQL的IDENTITY列的配置单元添加到表中并自动递增。我发现了许多对org.apache.hadoop.hive.contrib.udf.UDFRowSequence的引用,但我不知道我的HortonWorks 2.3安装在我的群集中。我不知道从哪里开始。我看到一个java文件here,我认为我必须编译,但是一旦我有一个.jar,它会去哪里?我曾尝试使用SerDe jar进行另一项任务,并且我永远也无法获得配置单元来查看/使用它(请参阅我在此here上的问题)。 我试图按照这个案例研究来创建一个自定义的UDF here。但是,我无法找到他们在我的Hortonworks安装中描述的路径(路径类似ql/src/java/org/apache/hadoop/hive/ql/udf/generic/)。如何将JAR添加到配置单元

看起来每个创建UDF的教程/指南/参考都假设了一些我还没有的知识。如何在Hortonworks安装配置单元中创建/使用UDFRowSequence功能?

回答

1

为了在Hive中使用UDF,编译Java代码并将UDF字节码类文件打包到JAR文件中。 然后,打开你的蜂巢会议上,JAR添加到类路径

hive> ADD JAR full path to jar file; 

这里的路径必须是,你必须把你的jar文件的本地文件系统的完整路径。

和 使用CREATE FUNCTION语句来定义使用Java类的函数:

hive> CREATE TEMPORARY FUNCTION functionname 
> AS 'classname with full package name'; 

然后你可以使用functionname在蜂巢会议。

路径 ql/src/java/org/apache/hadoop/hive/ql/udf/generic/实际上是指java类的包名称。

+0

做ADD JAR的时候是永久的吗?在稍后的hive会话中,我是否可以重新创建我的TEMPORARY FUNCTION,或者是否需要再次添加JAR?如果是这样,如何使这个JAR永久成为我的蜂巢的一部分? – wergeld

+0

我们可以在$ HIVE_HOME创建.hiverc文件/ bin中/和/或添加到jar文件 ADD JAR完整路径 创建临时函数MyFunction的AS “全包名的类名”这个文件在每次调用之前采购Hive shell,使它成为添加jar,添加文件和注册UDFs的理想场所。 然后我们将能够永久使用我们自己的UDF。 – madhu

+0

'$ HIVE_HOME'在哪里?这也是我所面临的问题,也是我的链接问题。列出$ HIVE_HOME应该是我没有在我的系统上的文档。 – wergeld