我是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,)})
在枚举每个组时交换第二列和第三列。
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)})
您确定您发布的输出是您从该转储语句中获得的输出吗?
从我看来,这应该是输出。
(74409607,{(74409607,d,5),(74409607,c,4),(74409607,b,1),(74409607,a,2)}) (74409735,{(74409735 ,, 158),(74409735,NA,159)})
回到你的问题,在pig中按运算符分组将给出输出作为具有分组列(以粗体显示)和具有相同值的所有行(斜体)的包。
您可以使用关系c从包中获取必需的字段。