关闭

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

273人阅读 评论(0) 收藏 举报
分类:
在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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:268009次
    • 积分:4517
    • 等级:
    • 排名:第6550名
    • 原创:100篇
    • 转载:560篇
    • 译文:0篇
    • 评论:14条
    最新评论