Cerdo Apache - SUM ()

Puedes usar el SUM()función de Pig Latin para obtener el total de los valores numéricos de una columna en una bolsa de una sola columna. Al calcular el total, elSUM() La función ignora los valores NULL.

Note -

  • Para obtener el valor de la suma global, necesitamos realizar una Group All operación y calcule el valor de la suma usando la función SUM ().

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

Sintaxis

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

grunt> SUM(expression)

Ejemplo

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

employee.txt

1,John,2007-01-24,250  
2,Ram,2007-05-27,220  
3,Jack,2007-05-06,170  
3,Jack,2007-04-06,100 
4,Jill,2007-04-06,220 
5,Zara,2007-06-06,300
5,Zara,2007-02-06,350

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

grunt> employee_data = LOAD 'hdfs://localhost:9000/pig_data/ employee.txt' USING PigStorage(',')
   as (id:int, name:chararray, workdate:chararray, daily_typing_pages:int);

Calcular la suma de todos los GPA

Para demostrar el SUM()función, intentemos calcular el número total de páginas escritas diariamente por todos los empleados. Podemos usar la función incorporada de Apache PigSUM()(distingue entre mayúsculas y minúsculas) para calcular la suma de los valores numéricos. Agrupemos la relación employee_data usando elGroup All operador y almacene el resultado en la relación llamada employee_group como se muestra a continuación.

grunt> employee_group = Group employee_data all;

Producirá una relación como se muestra a continuación.

grunt> Dump employee_group;
  
(all,{(5,Zara,2007-02-06,350),
(5,Zara,2007-06-06,300),
(4,Jill,2007-0406,220),
(3,Jack,2007-04-06,100),
(3,Jack,2007-05-06,170),
(2,Ram,2007-0527,220),
(1,John,2007-01-24,250)})

Calculemos ahora la suma global de las páginas escritas a diario.

grunt> student_workpages_sum = foreach employee_group Generate 
   (employee_data.name,employee_data.daily_typing_pages),SUM(employee_data.daily_typing_pages);

Verificación

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

grunt> Dump student_workpages_sum;

Salida

Producirá la siguiente salida, mostrando el contenido de la relación student_workpages_sum como sigue.

(({ (Zara), (Zara), (Jill) ,(Jack) , (Jack) , (Ram) , (John) }, 
{ (350) , (300) , (220) ,(100) , (170)  ,  (220)  , (250)  }),1610)