从猪群中的分组数据中获取字段数据

时间:2017-12-28 13:23:59

标签: apache-pig

我是PIG的新手。有人可以帮帮我吗以下是代码

a = load 'stage.temp' USING org.apache.hive.hcatalog.pig.HCatLoader();
b = limit a 10;
c = group b by $0;
dump c;

(74409607,{(74409607,a,2),(74409607,b,1)})
(74409607,{(74409607,c,4),(74409607,d,5)})
(74409735,{(74409735,NA,159),(74409735,,158)})

我们怎样才能从上面的运算符c生成这个?

(74409607,{(2,a),(1,b),(4,c),(5,d)})
(74409735,{(159,NA),(158,)})

2 个答案:

答案 0 :(得分:0)

在枚举每个组的同时交换第二列和第三列。

d = foreach c generate group,a.$2,a.$1;

注意:当您按$ 0分组并转储c时,您应该

(74409607,{(74409607,a,2),(74409607,b,1),(74409607,c,4),(74409607,d,5)})
(74409735,{(74409735,NA,159),(74409735,,158)})

答案 1 :(得分:0)

您确定您发布的输出是您从该转储语句中获得的输出吗?

从我看来,这应该是输出。

(的 74409607 下,{(74409607,d,5),(74409607,C,4),(74409607,B,1),(74409607,A,2)})
(的 74409735 下,{(74409735,158),(74409735,NA,159)})

回到你的问题,在Pig中按运算符分组将输出为具有分组列(以粗体显示)和具有相同值的所有行(斜体)的包。

您可以使用关系c。

从包中取出所需的字段