2017-06-14 3 views
0

ich stecke zu finden erhalten, nachdem die Daten Gruppierung von No.The Abteilung Schritten gefolgt von mirPig Skript den max, min, avg, die Summe des Gehalts in jeder Abteilung

grunt> A = load '/home/cloudera/naveen1/hive_data/emp_data.txt' using PigStorage(',') as (eno:int,ename:chararray,job:chararray,sal:float,comm:float,dno:int); 
grunt> B = group A by don; 
grunt> describe B; 
B: {group: int,A: {(eno: int,ename: chararray,job: chararray,sal: float,comm: float,dno: int)}} 

Bitte lassen Sie mich die Schritte kenne nach this.Ich bin etwas verwirrt über die Ausführung der Nested Foreach-Anweisung.

Daten enthält eno, ename, sal, Job, commisson, deptno und ich möchte extrahieren die maximale Sal in jeder Abteilung und der Angestellte, der das höchste Gehalt erhält.

Similey für min sal.

Antwort

1

Verwenden Sie die Aggregatfunktionen nach dem Gruppieren.

C = FOREACH B GENERATE group,MAX(A.sal),MIN(A.sal),AVG(A.sal),SUM(A.sal); 
DUMP C; 

Um den Namen, eno und max sal in jeder Abteilung zu erhalten, um die Datensätze sortieren und die obere Reihe

C = FOREACH B { 
     max_sal = ORDER A BY sal DESC; 
     max_limit = LIMIT max_sal 1; 
     GENERATE FLATTEN(max_limit); 
} 
DUMP C; 
+0

@inquistive_mind bekomme ich für den Namen bin eigentlich auf der Suche, eno und max sal in jeder Abteilung – Mahi

+0

@Mahi Ich habe die Antwort bearbeitet –

+0

@inquistive_mind vielen Dank. – Mahi