MapReduce开发总结

用户根据业务需求实现其中三个方法: map();setup(); cleanup ();

Partitioner分区

  1. 有默认实现HashPartitioner,逻辑是根据key的哈希值和numRecces来返回一个分区号; kexy.hashCode()&Integer.MAXVALUE%numRecces

  2. 如果业务上有特别的需求,可以自定义分区。

  3. Partitioner分区介绍

Comparable排序

  1. 当我们用自定义的对象作为key来输出时,就必须要实现WritableComparable接口,重写其中的compareTo()方法。

  2. 部分排序:对最终输出的每一个文件进行内部排序。

  3. 全排序:对所有数据进行排序,通常只有一个Reduce。

  4. 二次排序:排序的条件有两个。

combiner合并

  1. Combiner合并可以提高程序执行效率,i减少Io传输。但是使用时必须不能影响原有的业务处理结果。

  2. combiner合并案例

Reduce端分组:GroupingComparator

  1. 在Reduce端对key进行分组。应用于:在接收的key为b ean对象时,想让一个或几个字段相同(全部字段比较不相同)的key进入到同一个reduce方法时,可以采用分组排序。

  2. GroupingComparator分组案例

逻辑处理接口:Reducer

用户根据业务需求实现其中三个方法: reduce();setup(); cleanup ();

言尽于此,完结

无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。

  • 第一,设计模式能让专业人之间交流方便,如下:

程序员A:这里我用了XXX设计模式

程序员B:那我大致了解你程序的设计思路了

  • 第二,易维护

项目经理:今天客户有这样一个需求…

程序员:明白了,这里我使用了XXX设计模式,所以改起来很快

  • 第三,设计模式是编程经验的总结

程序员A:B,你怎么想到要这样去构建你的代码

程序员B:在我学习了XXX设计模式之后,好像自然而然就感觉这样写能避免一些问题

  • 第四,学习设计模式并不是必须的

程序员A:B,你这段代码使用的是XXX设计模式对吗?

程序员B:不好意思,我没有学习过设计模式,但是我的经验告诉我是这样写的

image

从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!

image

搜集费时费力,能看到此处的都是真爱!

的解说了23种设计模式,整理的文件如下图一览无余!

[外链图片转存中…(img-uibYJor6-1714416745289)]

搜集费时费力,能看到此处的都是真爱!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值