学习笔记01--在MR中优化用户的代码

在MR中优化用户的代码
1:尽量减少正则表达式的使用


2:String标记:测试标明:StringUtils.split  性能优于 StringTokenizer 优于 String.split 优于 Scanner类


3: Map函数中的对象重用:对象的实例化,尽量不要放在Map函数内,放在函数体之外
   Text outputValue = new Text(); 放在函数体外面,尽可能地重用对象将会提高效率。


4:Reduce函数中的对象重用:
   如果用户想在Reduce中缓存对象,用户需要克隆对象。
   List cached = new ArrayList();
   cached.add(WritableUtils.clone(value,context.getConfiguration()))
 
5: 字符串合并:
    线程安全的StringBuilder 优于  StringBuffer   优于 String 
    
    但是底线是使用StringBuilder 类是最安全的,最好使用构造函数为产生的字符串预先分配足够的空间以避免StringBuilder内部字节数组的重新分配
 
6:对象的开销
  ArrayList<String>  strings = new Arraylist<Stirng>();
  strings.add("A");
    strings.add("b");
    可以计算一下上面的ArrayList 和 其内容所占用的内存量:
    在java中,字符串的内存占用是根据以下公式进行计算的:
    字符串占用的内存字节数 = (numberOFCharacters * 2) + 38 
    
    备注:详细请参考《Hadoop硬实战》247页
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值