使用Hive表的Hive UDF

10

我已经开发了一个Java中的Hive UDF,它能够正确地工作。我的函数返回输入和Hive表中某一列之间的最佳匹配,因此它具有以下简化的伪代码:

class myudf  extends udf{

    evaluate(Text input){

        getNewHiveConnection(); //i want to replace this by getCurrentHiveUserConnetion();
        executeHiveQuery(input);
        return something;
}

我的问题是,如果这个函数是由Hive调用的,为什么我需要在我的代码中连接到Hive?我能否使用当前用户连接的连接?


@54I3d 你有没有运气? - Giri
@Giri,我选择了另一种解决方案,将表格数据作为属性文件包含在JAR文件中。由于文件太小,它的速度非常快,但是当表格更新时,我需要更新JAR文件! - 54l3d
3个回答

0

0

由于它实现了复杂的逻辑,所以需要用Java编写。问题被简化为聚焦于解决方案。谢谢! - 54l3d

-3

是的 - 你可以使UDF永久化。例如:

CREATE FUNCTION MatchFinder as 'com.mycompany.packagex.myudf' using jar  'hdfs:///an_HDFS_directory/my_jar_name.jar';

这将使您的函数永久化,任何人都可以调用它。在这种情况下,jar文件存储在HDFS上以便易于访问,但还有其他选项。

有关更多详细信息,请参见Hive wiki


这不是我想要的,我想使用调用我的UDF的用户当前使用的连接,而不是创建新连接,以使其更快。 - 54l3d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接