首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Hive中为用户定义的聚合函数编写Python UDF

如何在Hive中为用户定义的聚合函数编写Python UDF
EN

Stack Overflow用户
提问于 2014-12-09 23:47:56
回答 1查看 2.4K关注 0票数 1

我想使用Python对Hive中的聚合列(一个接一个组)进行一些聚合工作。我发现联非新议程就是为此目的而存在的。我只能找到一个Java示例。有用Python编写的例子吗?

或者对于python来说,UDF和联非新议程没有什么区别?对于联非新议程,我只需要把它写得像个减速机?请给我建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-15 22:16:26

您可以使用Hive的流式UDF功能(TRANSFORM)来使用Python,它从stdin读取并输出到stdout。您还没有找到任何Python " UDAF“示例,因为UDAF引用了您扩展的Hive类,因此它只在Java中。

当使用流UDF时,Hive将选择是启动还是映射,还是减少作业,因此不需要指定(有关此功能的更多信息,请参见此链接:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Transform)。

基本上,您的实现将是编写一个python脚本,该脚本从stdin读取,计算一些聚合数并将其输出到stdout。要在Hive中实现,请执行以下操作:

1)首先将python脚本添加到Hive中的资源库中,以便在集群中分发:

代码语言:javascript
复制
add file script.py;

2)然后调用转换函数并输入要聚合的列。下面是一个示例:

代码语言:javascript
复制
select transform(input cols)
using 'python script.py' as (output cols)
from table
;

取决于您需要做什么,您可能需要一个单独的映射程序和还原脚本。如果您需要基于列值进行聚合,请记住在映射阶段按语法使用Hive的集群/按语法分发,以便将分区数据发送到还原器。

如果这有帮助的话请告诉我。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27391006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档