Apache Pig SUM()函數(shù)

2018-01-03 07:14 更新

可以使用Pig Latin的 SUM() 函數(shù)獲取單列包中列的總數(shù)值。在計(jì)算總和時(shí), SUM() 函數(shù)會(huì)忽略NULL值。

注意

  • 要獲得全局總和,我們需要執(zhí)行Group All操作,并使用SUM()函數(shù)計(jì)算總和值。

  • 要獲取組的總和,我們需要使用 Group By 運(yùn)算符對其進(jìn)行分組,然后繼續(xù)SUM()函數(shù)。

語法

下面給出了 SUM() 函數(shù)的語法。

grunt> SUM(expression)

假設(shè)在HDFS目錄 /pig_data/ 中有一個(gè)名為 employee.txt 的文件,如下所示。

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

通過關(guān)系 employee_data 將此文件加載到Pig中,如下所示。

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

計(jì)算所有GPA的總和

讓我們嘗試計(jì)算每天輸入的所有員工的總頁數(shù)來演示 SUM() 函數(shù)。可以使用Apache Pig的內(nèi)置函數(shù) SUM() (區(qū)分大小寫)來計(jì)算數(shù)值的總和。讓我們使用 Group All 運(yùn)算符將關(guān)系employee_data分組,并將結(jié)果存儲(chǔ)在名為employee_group的關(guān)系中,如下所示。

grunt> employee_group = Group employee_data all;

它將產(chǎn)生如下所示的關(guā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)})

現(xiàn)在讓我們計(jì)算每天輸入的頁面的總和。

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

驗(yàn)證

使用 DUMP 運(yùn)算符驗(yàn)證關(guān)系 student_workpages_sum ,如下所示。

grunt> Dump student_workpages_sum;

輸出

它將產(chǎn)生以下輸出,顯示關(guān)系 student_workpages_sum 的內(nèi)容如下。

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號