我是 Piglatin 的新手,我有一个看起来像这样的数据文件(消息、电子邮件、用户会话、垃圾邮件类型)
为了简单起见,我只使用了垃圾邮件/非垃圾邮件-该字段的值通常是大约 100 种不同的变体
message1 user1@email 12345 spam
message2 user1@email 12345 spam
message3 user1@email 12345 not-spam
message10 user2@email 90879 not-spam
message11 user2@email 90879 not-spam
如果来自一个用户的任何一条消息被标记为垃圾邮件,我只需要 - 删除/过滤他的所有消息。所以上面的输出看起来像
message10 user2@email 90879 not-spam
message11 user2@email 90879 not-spam
其他 3 条消息被删除 - 因为它们来自同一个用户/会话
我正在尝试使用分组和嵌套来解决上述问题。任何帮助表示赞赏
DATA = LOAD './spamdata' using PigStorage() as (message:chararray, mailid:chararray, session:long, spamType:chararray);
GDATA = GROUP DATA BY (mailid,session);
GDATA 看起来像
GDATA: {group: (message: chararray,session: long),DATA: {(message: chararray,mailid: chararray,session: long,spamType: chararray)}}
我需要的只是从这个组中转储元素,其中包中的元素都没有“非垃圾邮件”类型的元素