运行 sql 时配置单元 UDF 如何运行?

Posted

技术标签:

【中文标题】运行 sql 时配置单元 UDF 如何运行?【英文标题】:how a hive UDF runs when a sql is running? 【发布时间】:2020-03-21 13:38:47 【问题描述】:

我对在 SQL 中执行 Hive UDF 感到困惑。 当 SQL 编译成 MR 作业时,节点从 HiveServer 获取 JAR?如果在UDF中声明了一些静态变量,这些静态变量存在于哪里?

【问题讨论】:

【参考方案1】:

是的,你的理解是正确的。 Hive 基本上通过将其添加到分布式缓存中作为 add Jar 使这些 jar 在其所有节点上可用。 您必须注册 UDF 以便 hive 识别它。注册 UDF 将进入 hive 元存储。这通常通过执行类似CREATE FUNCTION <function_name> AS org.apache... 的操作来完成 这通常应该在 hive-env.sh 中可用

【讨论】:

应该把罐子放在 $HIVE_HOME/auxlib/ 吗?如果没有,当sql导致MR作业时,它会在mapper期间引发classNotFound等异常。 而如果UDF中声明了一些静态变量,这些静态变量存在哪里?

以上是关于运行 sql 时配置单元 UDF 如何运行?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 你如何让 udf 在错误时返回 null?

Hive 给出 SemanticException [错误 10014]:运行我的 UDF 时

如何从 UDF 中读取另一个单元格?

如何将配置从配置单元脚本传递到 UDF

如何从 UDF 参数提供 SELECT 语句的 FROM 子句

使用 C# 的 SQL Server UDF