可以使用Pig Latin的 SUM() 函数获取单列包中列的总数值。在计算总和时, SUM() 函数会忽略NULL值。
注意
要获得全局总和,我们需要执行Group All操作,并使用SUM()函数计算总和值。
要获取组的总和,我们需要使用 Group By 运算符对其进行分组,然后继续SUM()函数。
下面给出了 SUM() 函数的语法。
grunt> SUM(expression)
假设在HDFS目录 /pig_data/ 中有一个名为 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
通过关系 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);
让我们尝试计算每天输入的所有员工的总页数来演示 SUM() 函数。可以使用Apache Pig的内置函数 SUM() (区分大小写)来计算数值的总和。让我们使用 Group All 运算符将关系employee_data分组,并将结果存储在名为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);
使用 DUMP 运算符验证关系 student_workpages_sum ,如下所示。
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还为 UserDefinedFunction(UDF:用户定义函数)提供广泛的支持。使用这些UDF,可以定义我们自己的...
databaseCollectionAdd本接口应在服务器端调用,详细说明参见服务端API。新增集合请求地址POST https://api.weixin.qq.com/tcb/d...
databaseCount本接口应在服务器端调用,详细说明参见服务端API。统计集合记录数或统计查询语句对应的结果记录数请求地址POST htt...
调试云函数本地调试Network 面板环境提示云函数本地调试云开发提供了云函数本地调试功能,在本地提供了一套与线上一致的 Node.js...
起步开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。云开发为开发者提供完整的云端支持,弱化...