2

私はPigをまったく使用したことがなく、問題が発生しています。

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

A:[ユーザー1、10]

B:[ユーザー1、20]

C:[ユーザー1、11]

D:[ユーザー2、10]

しきい値が2の場合、AとCは重複として識別される必要があります。Pigでこれを行うにはどうすればよいですか?現在、UDFとDISTINCTを組み合わせて使用​​する必要があるようですが、「重複」を何として定義するかをDISTINCTに伝える方法がわかりません。

ありがとう!

4

1 に答える 1

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を使用するというアイデアがあります。

于 2012-05-04T14:22:47.017 に答える