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
操作需要将结果解析为布尔值。如果我没有最新版本,我会永远被诅咒返回1
或0
并使用FILTER alias BY py_udf.f(field) > 0
?
是否无法从 Python 访问 Algebraic
、Accumulator
和 Filter
接口?
我也不能访问分布式缓存吗?
存储/加载函数呢?
【问题讨论】:
【参考方案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 中 UDF 中的 java.lang.NullPointerException