文档章节

Hadoop Streaming 实战: aggregate

尧山少侠
 尧山少侠
发布于 2015/12/23 13:25
字数 731
阅读 6
收藏 0
1. aggregate概述
aggregate是Hadoop提供的一个软件包,其用来做一些通用的计算和聚合。
Generally speaking, in order to implement an application using Map/Reduce model, the developer needs to implement Map and Reduce functions (and possibly Combine function). However, for a lot of applications related to counting and statistics computing, these functions have very similarcharacteristics. This provides a package implementing those patterns. In particular, the package provides a generic mapper class,a reducer class and a combiner class, and a set of built-in value aggregators.It also provides a generic utility class, ValueAggregatorJob, that offers a static function that creates map/reduce jobs。
在Streaming中通常使用Aggregate包作为reducer来做聚合统计。

2. aggregate class summary

DoubleValueSum This class implements a value aggregator that sums up a sequence of double values.
LongValueMax This class implements a value aggregator that maintain the maximum of a sequence of long values.
LongValueMin This class implements a value aggregator that maintain the minimum of a sequence of long values.
LongValueSum This class implements a value aggregator that sums up a sequence of long values.
StringValueMax This class implements a value aggregator that maintain the biggest of a sequence of strings.
StringValueMin This class implements a value aggregator that maintain the smallest of a sequence of strings.
UniqValueCount This class implements a value aggregator that dedupes a sequence of objects.
UserDefinedValueAggregatorDescriptor This class implements a wrapper for a user defined value aggregator descriptor.
ValueAggregatorBaseDescriptor This class implements the common functionalities of the subclasses of ValueAggregatorDescriptor class.
ValueAggregatorCombiner<K1 extends WritableComparable,V1 extends Writable> This class implements the generic combiner of Aggregate.
ValueAggregatorJob This is the main class for creating a map/reduce job using Aggregate framework.
ValueAggregatorJobBase<K1 extends WritableComparable,V1 extends Writable> This abstract class implements some common functionalities of the the generic mapper, reducer and combiner classes of Aggregate.
ValueAggregatorMapper<K1 extends WritableComparable,V1 extends Writable> This class implements the generic mapper of Aggregate.
ValueAggregatorReducer<K1 extends WritableComparable,V1 extends Writable> This class implements the generic reducer of Aggregate.
ValueHistogram This class implements a value aggregator that computes the histogram of a sequence of strings

3. streaming中使用aggregate
在mapper任务的输出中添加控制,如下:
function:key\tvalue
eg:
LongValueSum:key\tvalue
此外,置-reducer = aggregate。此时,Reducer使用aggregate中对应的function类对相同key的value进行操作,例如,设置function为LongValueSum则将对每个键值对应的value求和。

4. 实例1(value求和)
测试文件test.txt

a       15      1
a       17      1
a       18      1
a       19      1
a       19      1
a       19      1
a       19      1
b       20      1
c       15      1
c       15      1
d       16      1
a       16      1
mapper程序:
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char** argv)
{
        string a,b,c;
        while(cin >> a >> b >> c)
        {
                cout  << "LongValueSum:"<< a << "\t" << b  <<  endl;
        }
        return 0;
}
运行:
$hadoop streaming -input /app/test.txt -output /app/test -mapper ./mapper -reducer aggregate -file mapper  -jobconf mapred.reduce.tasks=1 -jobconf mapre.job.name="test"
输出:
a       142
b       20
c       30
d       16

5. 实例2(强大ValueHistogram)
ValueHistogram是aggregate package中最强大的类,基于每个键,对其value做以下统计
1)唯一值个数
2)最小值个数
3)中位置个数
4)最大值个数
5)平均值个数
6)标准方差
上述例子基础上修改mapper.cpp为:

#include <iostream>
#include <string>

using namespace std;

int main(int argc, char** argv)
{
        string a,b,c;
        while(cin >> a >> b >> c)
        {
                cout  << "ValueHistogram:"<< a << "\t" << b  <<  endl;
        }
        return 0;
}
运行命令同上
运行结果:
a       5       1       1       4       1.6     1.2
b       1       1       1       1       1.0     0.0
c       1       2       2       2       2.0     0.0
d       1       1       1       1       1.0     0.0

参考:
http://hadoop.apache.org/common/docs/r0.15.2/api/index.html?org/apache/hadoop/mapred/lib/aggregate/package-summary.html
book:Hadoop实战

本文转载自:http://blog.csdn.net/yfkiss/article/details/7019022

尧山少侠

尧山少侠

粉丝 7
博文 321
码字总数 26520
作品 0
海淀
程序员
私信 提问
北京大数据实战开发转型—程序员未来的筹码

活动将长期举行,报名后我们会第一时间与您联系(每周六) 活动流程 13:30 签到 14:00 老师分享 16:00 互动交流 16:30 活动结束 Hadoop环境搭建 HDFS分布式文件系统 (含项目实战) MapReduc...

简直是天才
2018/05/14
40
0
上海大数据实战开发转型—程序员未来的筹码

活动将长期(每周六)举行,报名后我们会第一时间与您联系 活动流程 13:30 签到 14:00 老师分享 16:00 互动交流 16:30 活动结束 (Hadoop) (含项目实战) NoSQL专题(含HBase) Hadoop企业项...

简直是天才
2018/05/15
17
0
上海大数据实战开发转型—程序员未来的筹码

活动将长期(每周六)举行,报名后我们会第一时间与您联系 活动流程 13:30 签到 14:00 老师分享 16:00 互动交流 16:30 活动结束 (Hadoop) (含项目实战) NoSQL专题(含HBase) Hadoop企业项...

简直是天才
2018/05/15
84
0
北京大数据实战开发转型—程序员未来的筹码

活动将长期举行,报名后我们会第一时间与您联系(每周六) 活动流程 13:30 签到 14:00 老师分享 16:00 互动交流 16:30 活动结束 Hadoop环境搭建 HDFS分布式文件系统 (含项目实战) MapReduc...

简直是天才
2018/05/14
17
0
深圳大数据实战开发转型—程序员未来的筹码

活动将长期举行,报名后我们会第一时间与您联系(每周六) 活动流程 13:30 签到 14:00 老师分享 16:00 互动交流 16:30 活动结束 (Hadoop) (含项目实战) NoSQL专题(含HBase) Hadoop企业项...

简直是天才
2018/05/14
13
0

没有更多内容

加载失败,请刷新页面

加载更多

Taro 兼容 h5 踩坑指南

最近一周在做 Taro 适配 h5 端,过程中改改补补,好不酸爽。 本文记录📝遇到的问题,希望为有相同需求的哥们👬节约点时间。 Taro 版本:1.3.9。 解决跨域问题 h5 发请求会报跨域问题,需...

dkvirus
47分钟前
3
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
今天
2
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
今天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
19
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部