我是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,)})
答案 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。
从包中取出所需的字段