Apache Pig - AVG ()

El cerdo latino AVG()La función se utiliza para calcular el promedio de los valores numéricos dentro de una bolsa. Al calcular el valor promedio, elAVG() La función ignora los valores NULL.

Note -

  • Para obtener el valor promedio global, necesitamos realizar una Group All operación, y calcule el valor promedio usando el AVG() función.

  • Para obtener el valor promedio de un grupo, necesitamos agruparlo usando el Group By operador y proceda con la función promedio.

Sintaxis

A continuación se muestra la sintaxis de la AVG() función.

grunt> AVG(expression)

Ejemplo

Supongamos que tenemos un archivo llamado student_details.txt en el directorio HDFS /pig_data/ Como se muestra abajo.

student_details.txt

001,Rajiv,Reddy,21,9848022337,Hyderabad,89
002,siddarth,Battacharya,22,9848022338,Kolkata,78
003,Rajesh,Khanna,22,9848022339,Delhi,90 
004,Preethi,Agarwal,21,9848022330,Pune,93 
005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar,75 
006,Archana,Mishra,23,9848022335,Chennai,87 
007,Komal,Nayak,24,9848022334,trivendram,83 
008,Bharathi,Nambiayar,24,9848022333,Chennai,72

Y hemos cargado este archivo en Pig con el nombre de la relación. student_details Como se muestra abajo.

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, gpa:int);

Calcular el GPA promedio

Podemos usar la función incorporada AVG()(distingue entre mayúsculas y minúsculas) para calcular el promedio de un conjunto de valores numéricos. Agrupemos la relaciónstudent_details utilizando el operador Agrupar todo y almacenar el resultado en la relación denominada student_group_all Como se muestra abajo.

grunt> student_group_all = Group student_details All;

Esto producirá una relación como se muestra a continuación.

grunt> Dump student_group_all;
   
(all,{(8,Bharathi,Nambiayar,24,9848022333,Chennai,72),
(7,Komal,Nayak,24,9848022 334,trivendram,83),
(6,Archana,Mishra,23,9848022335,Chennai,87),
(5,Trupthi,Mohan thy,23,9848022336,Bhuwaneshwar,75),
(4,Preethi,Agarwal,21,9848022330,Pune,93),
(3 ,Rajesh,Khanna,22,9848022339,Delhi,90),
(2,siddarth,Battacharya,22,9848022338,Ko lkata,78),
(1,Rajiv,Reddy,21,9848022337,Hyderabad,89)})

Calculemos ahora el GPA promedio global de todos los estudiantes usando el AVG() funcionar como se muestra a continuación.

grunt> student_gpa_avg = foreach student_group_all  Generate
   (student_details.firstname, student_details.gpa), AVG(student_details.gpa);

Verificación

Verifica la relación student_gpa_avg utilizando el DUMP operador como se muestra a continuación.

grunt> Dump student_gpa_avg;

Salida

Mostrará el contenido de la relación student_gpa_avg como sigue.

(({(Bharathi),(Komal),(Archana),(Trupthi),(Preethi),(Rajesh),(siddarth),(Rajiv) }, 
  {   (72)   ,  (83) ,   (87)  ,   (75)  ,   (93)  ,  (90)  ,   (78)   ,  (89)  }),83.375)