Apache Pig - Gruppenoperator
Das GROUPDer Operator wird verwendet, um die Daten in einer oder mehreren Beziehungen zu gruppieren. Es sammelt die Daten mit demselben Schlüssel.
Syntax
Unten ist die Syntax von angegeben group Operator.
grunt> Group_data = GROUP Relation_name BY age;
Beispiel
Angenommen, wir haben eine Datei mit dem Namen student_details.txt im HDFS-Verzeichnis /pig_data/ Wie nachfolgend dargestellt.
student_details.txt
001,Rajiv,Reddy,21,9848022337,Hyderabad
002,siddarth,Battacharya,22,9848022338,Kolkata
003,Rajesh,Khanna,22,9848022339,Delhi
004,Preethi,Agarwal,21,9848022330,Pune
005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar
006,Archana,Mishra,23,9848022335,Chennai
007,Komal,Nayak,24,9848022334,trivendram
008,Bharathi,Nambiayar,24,9848022333,Chennai
Und wir haben diese Datei mit dem Beziehungsnamen in Apache Pig geladen student_details Wie nachfolgend dargestellt.
grunt> student_details = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
as (id:int, firstname:chararray, lastname:chararray, age:int, phone:chararray, city:chararray);
Lassen Sie uns nun die Datensätze / Tupel in der Beziehung nach Alter gruppieren, wie unten gezeigt.
grunt> group_data = GROUP student_details by age;
Überprüfung
Überprüfen Sie die Beziehung group_data Verwendung der DUMP Bediener wie unten gezeigt.
grunt> Dump group_data;
Ausgabe
Anschließend erhalten Sie eine Ausgabe mit dem Inhalt der genannten Beziehung group_dataWie nachfolgend dargestellt. Hier können Sie beobachten, dass das resultierende Schema zwei Spalten hat -
Eins ist age, nach dem wir die Beziehung gruppiert haben.
Der andere ist ein bag, die die Gruppe der Tupel enthält, Schüleraufzeichnungen mit dem jeweiligen Alter.
(21,{(4,Preethi,Agarwal,21,9848022330,Pune),(1,Rajiv,Reddy,21,9848022337,Hydera bad)})
(22,{(3,Rajesh,Khanna,22,9848022339,Delhi),(2,siddarth,Battacharya,22,984802233 8,Kolkata)})
(23,{(6,Archana,Mishra,23,9848022335,Chennai),(5,Trupthi,Mohanthy,23,9848022336 ,Bhuwaneshwar)})
(24,{(8,Bharathi,Nambiayar,24,9848022333,Chennai),(7,Komal,Nayak,24,9848022334, trivendram)})
Sie können das Schema der Tabelle sehen, nachdem Sie die Daten mit dem gruppiert haben describe Befehl wie unten gezeigt.
grunt> Describe group_data;
group_data: {group: int,student_details: {(id: int,firstname: chararray,
lastname: chararray,age: int,phone: chararray,city: chararray)}}
Auf die gleiche Weise können Sie die Beispielillustration des Schemas mit dem abrufen illustrate Befehl wie unten gezeigt.
$ Illustrate group_data;
Es wird die folgende Ausgabe erzeugt -
-------------------------------------------------------------------------------------------------
|group_data| group:int | student_details:bag{:tuple(id:int,firstname:chararray,lastname:chararray,age:int,phone:chararray,city:chararray)}|
-------------------------------------------------------------------------------------------------
| | 21 | { 4, Preethi, Agarwal, 21, 9848022330, Pune), (1, Rajiv, Reddy, 21, 9848022337, Hyderabad)}|
| | 2 | {(2,siddarth,Battacharya,22,9848022338,Kolkata),(003,Rajesh,Khanna,22,9848022339,Delhi)}|
-------------------------------------------------------------------------------------------------
Gruppierung nach mehreren Spalten
Gruppieren wir die Beziehung nach Alter und Stadt wie unten gezeigt.
grunt> group_multiple = GROUP student_details by (age, city);
Sie können den Inhalt der genannten Beziehung überprüfen group_multiple Verwenden Sie den Dump-Operator wie unten gezeigt.
grunt> Dump group_multiple;
((21,Pune),{(4,Preethi,Agarwal,21,9848022330,Pune)})
((21,Hyderabad),{(1,Rajiv,Reddy,21,9848022337,Hyderabad)})
((22,Delhi),{(3,Rajesh,Khanna,22,9848022339,Delhi)})
((22,Kolkata),{(2,siddarth,Battacharya,22,9848022338,Kolkata)})
((23,Chennai),{(6,Archana,Mishra,23,9848022335,Chennai)})
((23,Bhuwaneshwar),{(5,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar)})
((24,Chennai),{(8,Bharathi,Nambiayar,24,9848022333,Chennai)})
(24,trivendram),{(7,Komal,Nayak,24,9848022334,trivendram)})
Alle gruppieren
Sie können eine Beziehung nach allen Spalten gruppieren, wie unten gezeigt.
grunt> group_all = GROUP student_details All;
Überprüfen Sie nun den Inhalt der Beziehung group_all Wie nachfolgend dargestellt.
grunt> Dump group_all;
(all,{(8,Bharathi,Nambiayar,24,9848022333,Chennai),(7,Komal,Nayak,24,9848022334 ,trivendram),
(6,Archana,Mishra,23,9848022335,Chennai),(5,Trupthi,Mohanthy,23,9848022336,Bhuw aneshwar),
(4,Preethi,Agarwal,21,9848022330,Pune),(3,Rajesh,Khanna,22,9848022339,Delhi),
(2,siddarth,Battacharya,22,9848022338,Kolkata),(1,Rajiv,Reddy,21,9848022337,Hyd erabad)})