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 对元组中的对应元素求和的主要内容,如果未能解决你的问题,请参考以下文章

sum()

通过键对元组进行归约和求和

python 对元组列表中的每个值求和

对本身位于元组中的元组(可迭代的可迭代)求和的最有效方法是啥?

元组中的元素到 Bag Pig 中的元组

python 元组操作总结