0

Hadoop には、次のようなものがたくさんあります: (item_id,owner_id,counter)- 重複する可能性がありますが、常にitem_id同じowner_idです!

counterfor eachの SUM を取得したいitem_idので、次のスクリプトを作成します。

alldata = LOAD '/path/to/data/*' USING D; -- D describes the structure
known_items = FILTER alldata BY owner_id > 0L;
group_by_item = GROUP known_data BY (item_id);
data = FOREACH group_by_item GENERATE group AS item_id, OWNER_ID_COLUMN_SOMEHOW, SUM(known_items.counter) AS items_count;

問題は、FOREACH私が取りたい場合known_items.owner_id- それは grouped の合計を持つタプルになるということitem_idです。最初の所有者を取得する最も効率的な方法は何ですか?

4

1 に答える 1

1

item_id最も簡単な解決策は、それぞれが同じものを持っているという仮定owner_idが正しい場合に正しい答えを与え、そうでない場合は通知します:owner_idグループの一部として を含める.

alldata = LOAD '/path/to/data/*' USING D; -- D describes the structure
known_items = FILTER alldata BY owner_id > 0L;
group_by_item = GROUP known_data BY (item_id, owner_id);
data = FOREACH group_by_item GENERATE FLATTEN(group), SUM(known_items.counter) AS items_count;
于 2013-01-11T15:22:10.210 に答える