Siehe MIN
A = LOAD 'test1.txt' USING PigStorage(',') as (f1:chararray,f2:float,f3:float,f4:int,f5:int,f6:int);
B = GROUP A ALL;
C = FOREACH B GENERATE MIN(A.f2),MIN(A.f3);
DUMP C;
EDIT1: Die Daten, die Sie geladen hat '$' in it.You werden entweder es aufzuräumen und es zu einem Schwimmerfeld laden zu Verwende die MIN-Funktion oder lade sie in ein Chararray und ersetze das '$' und wirf es dann auf float und wende die MIN-Funktion an.
EDIT2: Hier ist die Lösung, ohne die $ in den Originaldaten zu entfernen, aber im PigScript zu behandeln.
Eingang:
shell,$820.48,$11992.70,996,891,1629
shell,$817.12,$2105.57,1087,845,1630
Bharat,$974.48,$5479.10,965,827,1634
Bharat,$943.70,$9162.57,939,895,1635
PigScript
A = LOAD 'test5.txt' USING TextLoader() as (line:chararray);
A1 = FOREACH A GENERATE REPLACE(line,'([^a-zA-Z0-9.,\\s]+)','');
B = FOREACH A1 GENERATE FLATTEN(STRSPLIT($0,','));
B1 = FOREACH B GENERATE $0,(float)$1,(float)$2,(int)$3,(int)$4,(int)$5;
C = GROUP B1 ALL;
D = FOREACH C GENERATE CONCAT('$',(chararray)MIN(B1.$1)),CONCAT('$',(chararray)MIN(B1.$2));
DUMP D;
Output
I ha Ich habe versucht, diesen Befehl – Jig232
Dies gibt nicht richtig ans – Jig232
@Jigyasa Post Beispieldaten, Ihr Skript und erwartete Ausgabe.Sie versuchen zu bestimmen, welche Spalte ist weniger zwischen den 2 Spaltenwerte oder versuchen, den Mindestwert in 2 Spalten zu erhalten? –