从 PIG 中的一个元组生成一组元组

Generate a set of tuples from one tuple in PIG

我找不到任何解决方案如何根据规则在 Pig 中从一个元组生成一组元组:

输入:

((1,2,3),(a,b,c),(aaa,bbb,ccc))

输出:

(1,a,aaa)
(2,b,bbb)
(3,c,ccc)

假设应该应用TOBAG和FLATTEN,但这似乎太棘手了。

[tuple(original[i] for original in originals) for i in range(len(original[0]))] 如果您的原始列表名为 originals.

,将为您提供第二个元组列表

使用zip内置函数和参数解包("star" args):

>>> x = ((1,2,3),('a','b','c'),('aaa','bbb','ccc'))

>>> tuple(zip(*x))
((1, 'a', 'aaa'), (2, 'b', 'bbb'), (3, 'c', 'ccc'))

>>> for y in zip(*x):
    print(y)

(1, 'a', 'aaa')
(2, 'b', 'bbb')
(3, 'c', 'ccc')