當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Apache Pig SUM()用法及代碼示例



您可以使用SUM()Pig Latin 的函數,用於獲取 single-column 包中某列的數值總和。在計算總數時,SUM()函數忽略 NULL 值。

注意-

  • 要獲得全局總和值,我們需要執行一個Group All操作,並使用 SUM() 函數計算和值。

  • 要獲得一個組的總和值,我們需要使用Group By運算符並繼續執行 sum 函數。

用法

下麵給出的是SUM()函數。

grunt> SUM(expression)

示例

假設我們有一個名為employee.txt在 HDFS 目錄中/pig_data/如下所示。

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

我們已經將此文件加載到 Pig 中,並使用關係名稱employee_data如下所示。

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

計算所有 GPA 的總和

為了證明SUM()函數,讓我們嘗試計算所有員工每天輸入的總頁數。我們可以使用 Apache Pig 的 內置 函數SUM()(區分大小寫)來計算數值的總和。讓我們使用以下方法對關係 employee_data 進行分組Group All運算符,並將結果存儲在名為 employee_group 的關係中,如下所示。

grunt> employee_group = Group employee_data all;

它將產生如下所示的關係。

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)})

現在讓我們計算每天輸入的頁麵的總和。

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

確認

驗證關係student_workpages_sum使用DUMP操作符如下圖。

grunt> Dump student_workpages_sum;

輸出

它將產生以下輸出,顯示關係的內容student_workpages_sum如下。

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

相關用法


注:本文由純淨天空篩選整理自 Apache Pig - SUM()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。