MapReduce
简介
- MapReduce在处理数据的时候,首先将数据进行切片(Split),切片本质上是一种逻辑划分(logical split),实际上实在划分任务量
- 划分完任务量之后,每一个Split都会交给一个MapTask来处理
组件
序列化
- 在MapReduce中,需要对数据进行序列化,MapReduce中单独提供了对应的序列化形式 - 需要被序列化的对象对应的类实现接口Writable
- MapReduce在序列化过程中不允许属性为
null - 案例:统计每一个人花费的总流量(文件:flow.txt)
- 练习:获取每一个人的平均成绩(文件:score.txt)
分区
- 分区的作用是对数据进行分类
- 在实际过程中,需要根据指定的需求来对数据进行分类,指定不同的分区
- 案例:按地区,来分别统计每一个人花费的总流量(文件:flow.txt)
- MapReduce需要对分区来进行编号,编号从0开始依次向上递增
- 每一个分类需要对一个单独的ReduceTask,有几个分类,就需要产生对应个数的ReduceTask
- 练习:按月份,统计每一个人的总成绩(目录:score)
排序
- MapReduce会自动的数据的键来进行排序,默认是按照自然序
- 如果需要指定排序规则,那么键的位置上的元素对应的类必须实现
Comparable,考虑对数据进行序列化,所以实现WritableComparable - 案例:对之前的总流量来进行降序排序
- 练习:按照月份升序排序,如果是同一个月,则按照利润来降序排序(文件:profit.txt)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!