Hive:Hive UDF 中 CREATE FUNCTION 和 CREATE TEMPORARY FUNCTION 之间的区别

Posted

技术标签:

【中文标题】Hive:Hive UDF 中 CREATE FUNCTION 和 CREATE TEMPORARY FUNCTION 之间的区别【英文标题】:Hive: Difference between CREATE FUNCTION and CREATE TEMPORARY FUNCTION in Hive UDF 【发布时间】:2021-04-18 14:38:30 【问题描述】:

我是 hive 的新手,我正在做一个项目,我需要为数据整理创建一些 UDF。在我的研究中,我遇到了两种从添加的 jar 中创建 UDF 的语法

CREATE FUNCTION country AS 'com.hiveudf.employeereview.Country';

CREATE TEMPORARY FUNCTION country AS 'com.hiveudf.employeereview.Country';

我无法在上述两种方式中找到任何区别。有人可以向我解释或指导我找到正确的材料吗?

【问题讨论】:

【参考方案1】:

create function 和 create tmp function 的主要区别在于: 在 Hive 0.13 或更高版本中,函数可以注册到元存储,因此可以在查询中引用它们,而不必在每个会话中创建临时函数。

如果我们使用 CREATE TEMPORARY FUNCTION ,我们将不得不在每次开始新会话时重新创建该函数。

参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/Drop/ReloadFunction

【讨论】:

【参考方案2】:

CREATE TEMPORARY FUNCTION 创建一个新函数,只要会话持续,您就可以在 Hive 查询中使用该函数。这更快,因为我们不需要将函数注册到 megastore。 而CREATE FUNCTION 的作用更持久。这些函数可以注册到 Metastore,因此可以在查询中引用它们,而无需在每个会话中创建临时函数。

When to use: 可以使用TEMPORARY 创建中间函数,该函数旨在仅用于计算,以后可以由任何永久函数使用。 Reference

【讨论】:

谢谢。它现在增加了很多意义。

以上是关于Hive:Hive UDF 中 CREATE FUNCTION 和 CREATE TEMPORARY FUNCTION 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Hive 10Hive的UDFUDAFUDTF

Java中的Hive UDF在创建表时失败

hive之udf函数的使用

如何写hive的udf函数

IDEA下写hive的udf(踩坑教程)

如何在Hive&Impala中使用UDF