2016-06-15 3 views
0

誰かがpigのtop()関数を理解する助けになることができますか?実際には、top()のパラメータと混同しています。 一例を挙げて説明してください。Apache PigでTop()メソッドを使用するには?

+0

これは、[マニュアル](https://pig.apache.org/docs/r0.8.1/piglatin_ref2.html#TOP) – 54l3d

答えて

0

トップ()関数は、あなたが言及したタプルのトップ一定数を取得するために使用されている。..

はあなたには、いくつかのスキーマは私たちが今 (ID、年齢、名前)

Dataset: 
(1,22,k) 
(2,23,j) 
(3,22,l) 
(4,24,m) 
(5,23,n) 
(6,24,o) 
(7,22,p) 
(8,23,q) 
(9,24,r) 

を言わせていると仮定

A =Load .. 
B= Group A by age; 
C = Foreach B { 
top = TOP(2,0,A) 
Generate top; 
} 

出力:

({(7,22,p),(3,22,l)}) 
({(8,23,q),(5,23,n)}) 
({(9,24,r),(6,24,o)}) 
単にこのファイルを読み込みます

各年齢のTOP 2レコードが必要です。

そして

TOP(2,0,A) implies TOP(topN,column,relation) 

そこでここでは、各年齢からIDが取得されます高い(上)とid.So 2つのレコードで0列に応じて、トップ2の記録を取ると述べました。

もっと質問をしてください。 :-) ハッピーラーニング。

0

バッグのトップNタプルだけを取得したい場合。 TOP()を使用します。

A = LOAD 'file.txt' USING PigStorage(',') AS (col1:int,col2:int); 
file.txt  
(1001,800) 
(1001,800) 
(1001,800) 
(1002,900) 
(1003,900) 
(1003,900) 
(1004,1800) 
(1005,1800) 

B = GROUP A BY (col1); 

(1001,{(1001,800),(1001,800),(1001,800)}) 
(1002,{(1002,900)}) 
(1003,{(1003,900),(1003,900)}) 
(1004,{(1004,1800)}) 
(1005,{(1005,1800)}) 

top_data = FOREACH B { top = TOP(1, 1, A); GENERATE FLATTEN(top);}; 

出力TOP()後、最初の引数は、列がないトップN即ち、第二引数です。すなわち、第3の関係名はAです。

(1001,800) 
(1002,900) 
(1003,900) 
(1004,1800) 
(1005,1800) 
関連する問題