Apache Pig - Operator Grup
Itu GROUPoperator digunakan untuk mengelompokkan data dalam satu atau lebih relasi. Ini mengumpulkan data yang memiliki kunci yang sama.
Sintaksis
Diberikan di bawah ini adalah sintaks group operator.
grunt> Group_data = GROUP Relation_name BY age;
Contoh
Asumsikan bahwa kita memiliki file bernama student_details.txt di direktori HDFS /pig_data/ seperti gambar dibawah.
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
Dan kami telah memuat file ini ke Apache Pig dengan nama relasi student_details seperti gambar dibawah.
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);
Sekarang, mari kita mengelompokkan catatan / tupel dalam relasi berdasarkan usia seperti yang ditunjukkan di bawah ini.
grunt> group_data = GROUP student_details by age;
Verifikasi
Verifikasi relasinya group_data menggunakan DUMP operator seperti yang ditunjukkan di bawah ini.
grunt> Dump group_data;
Keluaran
Kemudian Anda akan mendapatkan output yang menampilkan konten dari relasi bernama group_dataseperti gambar dibawah. Di sini Anda dapat mengamati bahwa skema yang dihasilkan memiliki dua kolom -
Satu adalah age, yang dengannya kami telah mengelompokkan relasi.
Yang lainnya adalah a bag, yang berisikan kelompok tupel, catatan siswa dengan umur masing-masing.
(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)})
Anda dapat melihat skema tabel setelah mengelompokkan data menggunakan describe perintah seperti yang ditunjukkan di bawah ini.
grunt> Describe group_data;
group_data: {group: int,student_details: {(id: int,firstname: chararray,
lastname: chararray,age: int,phone: chararray,city: chararray)}}
Dengan cara yang sama, Anda bisa mendapatkan ilustrasi contoh skema menggunakan illustrate perintah seperti yang ditunjukkan di bawah ini.
$ Illustrate group_data;
Ini akan menghasilkan keluaran sebagai berikut -
-------------------------------------------------------------------------------------------------
|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)}|
-------------------------------------------------------------------------------------------------
Pengelompokan berdasarkan Beberapa Kolom
Mari kita kelompokkan relasinya berdasarkan usia dan kota seperti yang ditunjukkan di bawah ini.
grunt> group_multiple = GROUP student_details by (age, city);
Anda dapat memverifikasi konten dari relasi bernama group_multiple menggunakan operator Dump seperti yang ditunjukkan di bawah ini.
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)})
Kelompokkan Semua
Anda dapat mengelompokkan relasi berdasarkan semua kolom seperti yang ditunjukkan di bawah ini.
grunt> group_all = GROUP student_details All;
Sekarang, verifikasi konten relasinya group_all seperti gambar dibawah.
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)})