Pig 中的 Python UDF

Posted

技术标签:

【中文标题】Pig 中的 Python UDF【英文标题】:Python UDFs in Pig 【发布时间】:2012-05-30 01:20:08 【问题描述】:

我看过文档here,但我承认我觉得它相当缺乏。我想知道是否有人可以给我一些关于将 Python UDF 合并到 Pig 中的示例。特别是

在 Pig 0.10 之前,布尔类型不存在,但 FILTER 操作需要将结果解析为布尔值。如果我没有最新版本,我会永远被诅咒返回10 并使用FILTER alias BY py_udf.f(field) > 0? 是否无法从 Python 访问 AlgebraicAccumulatorFilter 接口? 我也不能访问分布式缓存吗? 存储/加载函数呢?

【问题讨论】:

【参考方案1】:

Python UDF 非常有限。您不能使用 Algebraic 或 Accumulator 接口,也不能在 Python 中编写 LoadFunc。对于比地图操作更复杂的任何事情,您可能需要求助于 Java UDF。

也就是说,可以在http://ragrawal.wordpress.com/2013/02/24/on-writing-python-udf-for-pig-a-perspective/ 找到具有动态输出架构的更复杂的 Python UDF。这可能对您没有帮助,但它会让您更好地了解 Python UDF 可以做什么。

【讨论】:

【参考方案2】:

这可能无法回答您的大部分具体问题,但this blog post 和链接代码包含几个很好的将 Pig 与 Python 结合使用的示例,并且确实包括 Store/Load 的使用及其与 Python 的交互。

【讨论】:

以上是关于Pig 中的 Python UDF的主要内容,如果未能解决你的问题,请参考以下文章

Pig 中的 SimpleTextLoader UDF

显示结果中的 Pig Udf

PIG 中 UDF 中的 java.lang.NullPointerException

Pig 中 UDF 中 Jython 的限制

Pig into Cassandra - 使用 python UDF 和 CqlStorage 传递列表对象

JAVA 错误 1070 中的 PIG UDF