2012-12-27 1 views
6

Come trovare lo MAX di una tupla nel maiale?Hadoop PIG Max di tupla

Il mio codice è simile al seguente:

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; 

Questo restituisce 40, ma voglio la coppia chiave-valore pieno: C,40. Qualche idea?

risposta

7

Questo funziona con Pig 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

fa questo lavoro per pig-0.13.0? Grazie. – BlueFeet

+0

Molto probabilmente sì :) – Frederic

+0

Solo un heads-up: mentre il calcolo dei dati "C" dovrebbe essere filtrato da B.val invece di C.val – Zibi

3

Prova questa:

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;