2012-05-03 9 views
2

私はまったく新しいブタです。私はいくつかの問題を抱えています。Pigの制約付き複製を削除するにはどうすればよいですか?

私はデータのリストを持っており、重複を削除したいと思います。ただし、同じユーザー名を持ち、アクセス時間が同じしきい値内にあることで重複が定義されているということです。例えば:

A:[USER1、10]

B:[USER1、20]

C:[USER1、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を使用しています。

関連する問題