8

Pig で b でグループ化したい形式 (t、a、b) のタプルのコレクションがあります。グループ化したら、各グループのタプルから b を除外し、グループごとにフィルター処理されたタプルのバッグを生成します。

例として、(1,2,1) (2,0,1) (3,4,2) (4,1,2) (5,2,3) があるとします。

pig スクリプトは {(1,2),(2,0)} {(3,4),(4,1)} {(5,2)} を生成します。

問題は、この結果をどのように生成するかです。私は、集計操作が group by 操作の後に続く例を見るのに慣れています。タプルをフィルタリングしてバッグに戻す方法は、私にはあまり明確ではありません。ご協力ありがとうございます。

4

1 に答える 1

8

私が探していたのは、Pig のネストされたプロジェクションの構文であることがわかりました。

(t,a,b) の形式のタプルがあり、group by の後に b をドロップしたい場合は、この方法で行われます。

grouped = GROUP tups BY b;
result = FOREACH grouped GENERATE tup.(t,a);

PigLatin ページの「ネストされたプロジェクション」セクションを参照してください。http://wiki.apache.org/pig/PigLatin

于 2012-05-30T01:42:14.040 に答える