- Apache Pig 教程
- Apache Pig - 首页
- Apache Pig 简介
- Apache Pig - 概述
- Apache Pig - 架构
- Apache Pig 环境
- Apache Pig - 安装
- Apache Pig - 执行
- Apache Pig - Grunt Shell
- Pig Latin
- Pig Latin - 基础
- 加载 & 存储操作符
- Apache Pig - 读取数据
- Apache Pig - 存储数据
- 诊断操作符
- Apache Pig - 诊断操作符
- Apache Pig - Describe 操作符
- Apache Pig - Explain 操作符
- Apache Pig - Illustrate 操作符
- 分组 & 连接
- Apache Pig - Group 操作符
- Apache Pig - Cogroup 操作符
- Apache Pig - Join 操作符
- Apache Pig - Cross 操作符
- Pig Latin 内置函数
- Apache Pig - Eval 函数
- 加载 & 存储函数
- Apache Pig - Bag & Tuple 函数
- Apache Pig - 字符串函数
- Apache Pig - 日期时间函数
- Apache Pig - 数学函数
- Apache Pig 有用资源
- Apache Pig - 快速指南
- Apache Pig - 有用资源
- Apache Pig - 讨论
Apache Pig - SUM() 函数
您可以使用 Pig Latin 的 SUM() 函数获取单列包中某一列数值的总和。在计算总和时,SUM() 函数会忽略 NULL 值。
注意 −
要获取全局总和值,我们需要执行 Group All 操作,并使用 SUM() 函数计算总和值。
要获取某一组的总和值,我们需要使用 Group By 操作符对其进行分组,然后使用求和函数。
语法
下面是 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://:9000/pig_data/ employee.txt' USING PigStorage(',')
as (id:int, name:chararray, workdate:chararray, daily_typing_pages:int);
计算所有 GPA 的总和
为了演示 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_eval_functions.htm
广告