我正在使用 DataFu 对我的包进行分组。如下:
pvlist_grp = GROUP pvlist by uid;
uid_vid_pv = FOREACH pvlist_grp {
vids = FOREACH pvlist GENERATE date, vid;
GENERATE uid,
vids as vid,
BagGroup(pvlist.(date, uid, vid), pvlist.date) as grouped;
}
uid_vid_pv: {uid: chararray,vid: {(date: chararray,vid: chararray)},grouped: {(group: chararray,{(date: chararray,uid: chararray,vid: chararray)})}}
当我转储前 10 个时,我会看到每个 uid 包含 (date, vid) 的所有 vid。但是,分组显示其他 uid 记录。例如:
(60,{(20160103,255),(20160103,255),(20160103,257),(20160103,255),(20160101,252)},{(20160103,{(20160103,21,18),(20160103,21,453),(20160103,21,452),(20160103,21,67),(20160103,21,18),(20160103,21,455),(20160103,21,43),(20160103,21,453),(20160103,21,16),(20160103,21,45),(20160103,21,18),(20160103,21,18),(20160103,21,67),(20160103,21,455),.............})})
转储的结果显示其中包含其他 uid 数据的袋组。它将所有 uid 中的整个 vid 包分组,但我只希望每个 uid。
想法结果应该是这样的:
(60,{(20160103,255),(20160103,255),(20160103,257),(20160103,255),(20160101,252)},{(20160103,{(20160103,255),(20160103,255),(20160103,257),(20160103,255)}),(20160101,{(20160101,252)})})
任何帮助为什么?我正在使用猪 1.2.0。
更新:
看起来像 BagGroup 类型的从内存中调用操作。所以第一个uid BagGroup 总是正确的,然后它把之前处理过的包添加到一起操作。IE。如果第一条记录是 uid 21,则 BagGroup 将所有 21 个结果分组。接下来,如果第二条记录 uid 为 60,那么 BagGroup 会同时输出 21 和 60 的结果。