0

豚ラテン語の質問があります。次のテーブルがあります。

ID:Seller:Price:BID
1:John:20:B1
1:Ben:25:B1
2:John:60:B2
2:Chris:35:B2
3:John:20:B3

次を使用して、ID でテーブルをグループ化できます (テーブルであると仮定ALOADます)。

W = GROUP A BY ID;

しかし、私が理解できないのは、各 ID の最低価格の値のみを返すコマンドです。 この例では、最終的な出力は次のようになります

1:John:20:B1
2:Chris:35:B2
3:John:20:B3

乾杯、
シベドッグ

4

2 に答える 2

0

オプション (1) - 最高価格のすべてのレコードを取得:

新しい (Pig 0.11) RANK 演算子を使用します。

A = LOAD ...;
B = RANK A BY Price DESC;
C = FILTER B BY $0=1;

オプション (2) - 最高価格のすべてのレコードを取得:

Pig バージョン 0.11 未満:

a = load ...; 
b = group a by all; 
c = foreach b generate MAX(a.price) as maxprice; 
d = JOIN a BY price, c BY maxprice;

オプション (3) - org.apache.pig.piggybank.evaluation.ExtremalTupleByNthField を使用して、最大価格のタプルの 1 つを取得します。

define mMax org.apache.pig.piggybank.evaluation.ExtremalTupleByNthField( '4', 'max' );

a = load ...;
b = group a by all;
c - foreach b generate mMax(a);
于 2013-10-09T08:48:47.997 に答える