gpt4 book ai didi

hive - 如何为所有 session 创建配置单元 UDF

转载 作者:行者123 更新时间:2023-12-02 22:19:32 25 4
gpt4 key购买 nike

我可以创建一个 UDF 并使用 CREATE TEMPORARY FUNCTION 为当前配置单元 session 配置它。有没有办法只执行一次并使此功能可用于所有用户的所有 future session ?

最佳答案

要使用 UDF,您需要 2 个步骤:

  1. 使 UDF jar 可用于集群中的所有节点。这通常是通过像 ADD JAR my_jar.jar 这样的命令将其添加到集群的分布式缓存中来完成的。
  2. 注册您的 UDF,以便 Hive 可以识别它。这基本上将 UDF 的名称(例如 from_unixtime)与 UDF 的类(org.apache.hadoop.hive.ql.udf.FromUnixTime)联系起来。这通常由类似 CREATE TEMPORARY FUNCTION from_unixtime AS 'org.apache.hadoop.hive.ql.udf.FromUnixTime'; 的命令完成

因此,为了使 UDF 对所有用户可用,您必须执行上述 2 个步骤。对于 #1,您可以执行类似 export HIVE_AUX_JARS_PATH = <path to the folder> 的操作在 hive-env.sh 中,这将使 jar 可用。

获得#2 是棘手的,最好的方法是在 Hive 元存储中支持在 UDF 名称和类名称之间建立链接。然而,目前情况并非如此。因此,没有真正好的方法来做到这一点。

我建议使用 .hiverc 文件,它同时执行上面的 #1 和 #2。将它放在您的主目录或配置单元 bin 目录中(尽管正在使用一个补丁来从配置单元的 conf 目录中获取它)。唯一的问题是它仅在用户通过 CLI 访问 hive 时才有效。如果您使用的是 JDBC,则必须在 Hive session 开始时手动获取该文件。

关于hive - 如何为所有 session 创建配置单元 UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13940498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com