如何在Pig中删除带约束的重复项?

时间:2012-05-03 00:14:27

标签: apache-pig

我是猪的新手,我遇到了一些麻烦。

我有一个数据列表,我想删除重复项。但是,问题是重复项的定义是具有相同的用户名并且访问时间在同一阈值内。例如:

答:[User1,10]

B:[User1,20]

C:[User1,11]

D:[User2,10]

如果阈值为2,则应将A和C标识为重复。我怎么在Pig中这样做?目前看来我应该使用UDF和DISTINCT的某种组合,但我不知道如何告诉DISTINCT我想要将“复制”定义为。

谢谢!

1 个答案:

答案 0 :(得分:2)

a=load 'data' as (user, access_time:int) using ...;
b=foreach a generate user as user, (access_time > $threshold ? $threshold : access_time) as access_time;
c=group b by user;
d=foreach c generate group as user, FLATTEN(DISTINCT(b.access_time)) as access_time;
store d;

我没有测试脚本,但想法是按用户分组,将高于阈值的所有内容替换为阈值,然后使用内置的不同UDF。