2012-05-03 52 views
2

我對豬是全新的,我遇到了一些麻煩。如何刪除Pig中帶有約束的重複項?

我有一個數據列表,我想刪除重複項。但是,問題在於重複是通過具有相同的用戶名並且訪問時間在相同的閾值內來定義的。例如:

一個:[用戶1,10]

B:[用戶1,20]

C:[用戶1,11]

d:[用戶2,10]

如果閾值爲2,則應將A和C標識爲重複項。我如何在豬身上做到這一點?它目前看起來像我應該使用UDF和DISTINCT的一些組合,但我不知道如何告訴DISTINCT我想定義「重複」爲。

謝謝!

+0

你是什麼意思的「門檻」?你其實是指「距離」? – ihadanny

回答

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。