如何删除pig中具有约束的重复项?

xvw2m8pv  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(315)

我对Pig完全陌生,我遇到了一些麻烦。
我有一个数据列表,我想删除重复的。但是,关键是重复项是通过具有相同的用户名并且访问时间在相同的阈值内来定义的。例如:
答:[用户1,10]
b:[用户1,20]
c:[用户1,11]
d:[用户2,10]
如果阈值为2,则应将a和c标识为重复项。我在Pig里怎么做?目前看来我应该使用udf和distinct的一些组合,但我不知道如何告诉distinct我想定义“duplicate”为什么。
谢谢!

dpiehjr4

dpiehjr41#

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;

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

相关问题