PIG 对元组中的对应元素求和
Posted
技术标签:
【中文标题】PIG 对元组中的对应元素求和【英文标题】:PIG sum corresponding elements in tuple 【发布时间】:2015-08-06 08:37:16 【问题描述】:我有一大包元组,其中包含常量但未知数量的整数(超过 200 个)。有没有办法从这个元组中求和相应的元素?
例如SUM_TUPLES((1, 0, 1), (2, 1, 0))
应该返回(3, 1, 1)
。
我用 Python 编写了我的 UDF,但由于包和元组真的很大,我得到了 GC limit exceeded error
。
def SUM_TUPLES(tuple_bag):
if not tuple_bag:
return []
result = len(iter(tuple_bag).next())*[0]
for tup in tuple_bag:
for i, ele in enumerate(tup):
result[i] += ele
return result
【问题讨论】:
您的数据是否包含除袋子之外的其他列?还是只有一列包含要添加的袋子? 数据有 4 列 - 第一个是 chararrays,最后一个是元组。我将数据按 3 第一列分组,并希望对分组元组中的值求和(它们通过组操作放入包中) 【参考方案1】:已经回复here
import operator
tuple_bag = (1, 0, 1), (2, 1, 0)
tuple(map(operator.add, *tuple_bag))
【讨论】:
我的函数做同样的事情,但问题是 PIG 效率,我正在寻找更有效的方法 - 也许一些内置 PIG UDF。以上是关于PIG 对元组中的对应元素求和的主要内容,如果未能解决你的问题,请参考以下文章