确定在 Hive 中创建 UDF 的语言

Posted

技术标签:

【中文标题】确定在 Hive 中创建 UDF 的语言【英文标题】:Determine the language for UDF creation in Hive 【发布时间】:2019-05-07 00:57:10 【问题描述】:

总结:关注点与 Hive 中的 UDF 创建有关。

亲爱的朋友们,由于我是在 Hive 中创建 UDF 的新手(我已通过 google 阅读过有关此内容,但不是很清楚),我在这里的第一件事是确定哪种方式可能是最好的方式,例如 Java/Python 或任何其他人编写配置单元 UDF。

另一件事是我应该根据什么来分析?我应该寻找哪些参数?

请注意,我几乎没有下面给出的需要编写 UDF 的函数。 1.在需要“不聚合”的情况下,选择另一个功能所需的子句分组。 2.返回需要“聚合”时需要的select和group by子句。 3.对于vector_indexes是SUM,LISTAGG字符串用于数据采集查询 4.返回其他函数使用的WHERE子句。 5 以逗号分隔的字符串返回第 n 项。 6. 窄数据的百分位值函数。 7. 计算给定计数器名称的百分位数。除了百分位数,它还输出计算中使用的样本数、峰值和平均值。

非常感谢您,

【问题讨论】:

【参考方案1】:

这个问题可能不在指南范围内,因为您是在征求意见。

话虽如此,我会提议:

A) 你选择一种你知道的语言。

B) 如果您两者都知道,请根据您需要的功能进行选择。

C) 考虑性能 - 我相信(但不能确定)编译的 Java Jar 将在不启动 Java 运行时的情况下运行,只是为了支持该 Java 模块(它将在 hive java 实例中运行)。要运行 Python 模块,需要实例化新的 Python 解释器并通过进程间通信传输数据。因此,java 可能性能稍好一些——尤其是在算法简单的情况下。但是,除非您正在处理庞大的数据集,否则您可能根本不会注意到。

最后,您可能可以使用 Hive 查询语言完成您要求的所有功能。

【讨论】:

感谢 GMc,surajit-paul.blogspot.com/2014/06/javapython-as-hive-udf.html 此链接提供了与此相关的非常有用的信息。 @user10914967 如果这对您有所帮助,请您接受答案(点击答案旁边的灰色复选标记)并投票吗?谢谢。

以上是关于确定在 Hive 中创建 UDF 的语言的主要内容,如果未能解决你的问题,请参考以下文章

Hive UDF 运行:在 hive 中创建临时函数时出错

如何使用 python 在 HIVE 中创建 UDF 进行时间戳转换

在 BigQuery 中创建 UDF

描述 hive 自定义 UDF 文档

Hive 自动增量 UDF 没有给出想要的结果

如何在Hive&Impala中使用UDF