Hive 如何为配置单元自定义UDF添加JAR,使其在HDInsight集群上永久可用?

Hive 如何为配置单元自定义UDF添加JAR,使其在HDInsight集群上永久可用?,hive,azure-hdinsight,hive-udf,Hive,Azure Hdinsight,Hive Udf,我已经在Hive中创建了一个自定义UDF,它在Hive命令行中进行了测试,运行良好。现在我有了UDF的jar文件,我需要做什么才能让用户创建指向它的临时函数?理想情况下,在配置单元的命令提示符下,我可以执行以下操作:- hive> add jar myudf.jar; Added [myudf.jar] to class path Added resources: [myudf.jar] hive> create temporary function foo as 'mypackag

我已经在Hive中创建了一个自定义UDF,它在Hive命令行中进行了测试,运行良好。现在我有了UDF的jar文件,我需要做什么才能让用户创建指向它的临时函数?理想情况下,在配置单元的命令提示符下,我可以执行以下操作:-

hive> add jar myudf.jar;
Added [myudf.jar] to class path
Added resources: [myudf.jar]
hive> create temporary function foo as 'mypackage.CustomUDF';
在此之后,我能够正确使用该功能

但我不想在每次执行函数时都添加jar。我应该能够在以下情况下运行此功能:-

  • 从Visual Studio对HDInsight群集执行配置单元查询
  • 通过SSH(Linux)或从命令行执行配置单元查询 RDP/cmd(Windows)
  • 从Ambari(Linux)配置单元视图执行配置单元查询
  • 从HDinsight查询控制台配置单元执行配置单元查询 编辑器(Windows群集)

  • 因此,无论我如何执行查询,JAR都应该已经可用并添加到路径中。对于Linux和Windows群集,如何确保这一点?

    可能是您可以在hive etc/conf目录中的hiverc文件中添加jar。每次配置单元启动时都将加载此文件。所以从下一次开始,您不需要为该会话单独添加jar

    检查这个。。这不是我的意思。我不介意使用addjar命令重新注册。问题是如何将JAR添加到路径而不是永久性UDF。我想了解这些步骤(在何处复制JAR等),以便无论如何访问该集群的配置单元,都可以通过配置单元使用它。现在,我可以使用SSH连接到集群(headnode),将JAR复制到headnode的my home dir并发出add JAR命令。但是,如果我通过web UI(HDInsight配置单元编辑器)或Ambari配置单元视图使用配置单元,或者使用Visual Studio发出命令,该怎么办?为了进一步澄清这一点,我使用RDP连接到HDInsight Hadoop(Windows)群集的头节点。已将JAR文件复制到系统路径中的一个文件夹中(显示为windows的path变量中的一个文件夹)。但是,当我从配置单元提示符发出addjar命令时,它说找不到jar文件。这就是我想要避免的。看起来配置单元有自己的path变量。它在根目录上吗?我没有找到/etc/conf目录。另外,您是说仅在头节点上复制就足够了吗?您可以检查$HIVE\u HOME/bin/.hiverc文件。如果文件不存在,您可以创建此文件。或者您可以选择另一个选项。在hive-site.xml中,有一个名为的属性。将其值作为jar文件的位置。将在头节点上进行更改?在安装了配置单元的配置文件中进行更改