运行 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 如何运行?的主要内容,如果未能解决你的问题,请参考以下文章
Hive 给出 SemanticException [错误 10014]:运行我的 UDF 时