2012-12-27 13 views
6

Wie finde ich die MAX eines Tupel in Pig?Hadoop PIG Max von Tupel

Mein Code sieht wie folgt aus:

A,20 
B,10 
C,40 
D,5 

data = LOAD 'myData.txt' USING PigStorage(',') AS key, value; 
all = GROUP data ALL; 
maxKey = FOREACH all GENERATE MAX(data.value); 
DUMP maxKey; 

Diese 40 zurück, aber ich möchte den vollständigen Schlüssel-Wert-Paar: C,40. Irgendwelche Ideen?

Antwort

7

Dies funktioniert mit Schwein 0.10.0:

data = LOAD 'myData.txt' USING PigStorage(',') AS (key, value: long); 
A = GROUP data ALL; 
B = FOREACH A GENERATE MAX(data.value) AS val; 
C = FILTER data BY value == (long)C.val; 
DUMP C; 
+0

macht diese Arbeit für Schwein-0.13.0? Vielen Dank. – BlueFeet

+0

Höchstwahrscheinlich ja :) – Frederic

+0

Nur ein Heads-up: während Daten 'C' sollte von B.val statt C.val – Zibi

3

Try this:

data = LOAD 'myData.txt' USING PigStorage(',') AS (key: chararray, value: int); 

sorted = ORDER data BY value DESC; 

limited = LIMIT sorted 1; 

projected = FOREACH limited GENERATE key; 

DUMP projected; 
Verwandte Themen