我有一个pig问题,它涉及到将表的列转换成元组,以便将它们传递给udf。详细信息如下follows:-
有一个结果“c”,它看起来像下面如果我做“转储c”
(a1、b1、c1)(a2、b2、c2)
我想按如下方式转换和提取每两列的组合:
(a1、a2、a3)、(b1、b2、b3)、(c1、c2、c3)
然后对每个可能的元组对调用一个udf:
自定义项((a1、a2、a3)、(b1、b2、b3))
自定义项((a1、a2、a3)、(c1、c2、c3))
自定义项((c1、c2、c3)、(b1、b2、b3))
我在Pig里怎么做?
1条答案
按热度按时间wgeznvg71#
您可以使用
GROUP .. ALL
然后使用包投影:但是,请注意,每列的值将存储在包中,而不是元组中。这是正确的,因为pig中的关系不能保证记录以任何特定方式排序。所以你的自定义项应该是比较包,而不是依赖于元素的顺序。
但是,能够比较原来在同一行中的值可能很重要;i、 例如,匹配
a1
与b1
为此,您将需要编写您的自定义项以获取单个包,每个元组包含成对的元素an
以及bn
. 为此,请使用两列的袋投影:同样,元组不一定是有序的,但是您不应该依赖于这个事实。你的包里会有元组
(a1,b1)
,(a2,b2)
等等。