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

问题描述 投票:0回答:2

我是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,)})
apache-pig
2个回答
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)})

0
投票

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

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

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

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

您可以使用关系c从包中获取必需的字段。

© www.soinside.com 2019 - 2024. All rights reserved.