多次读取reduce函数中迭代器的数据
2016-05-13 16:30
197 查看
spark,hadoop交流群,QQ群号:521066396,欢迎加入共同学习,一起进步~
第一次碰到读取reduce函数中迭代器的数据只能取一次的问题。为了优化,在reduce函数中,Iterable values只能被读取一次。查阅相关资料,如果要反复使用,需要克隆或者新生成对象。举个简单例子:
如果在reduce函数中读过values,
当reduce将数据填充到值迭代器的时候,应用了对象重用。这个特性对缓存机制有潜在影响。如果还想再使用values,那么需要克隆或保存新的对象。
下面是采用克隆的方式。
第一次碰到读取reduce函数中迭代器的数据只能取一次的问题。为了优化,在reduce函数中,Iterable values只能被读取一次。查阅相关资料,如果要反复使用,需要克隆或者新生成对象。举个简单例子:
如果在reduce函数中读过values,
for (Text value : values) { //do what you want }
当reduce将数据填充到值迭代器的时候,应用了对象重用。这个特性对缓存机制有潜在影响。如果还想再使用values,那么需要克隆或保存新的对象。
List<Text> lists = new ArrayList<Text>(); Iterator<Text> iter = values.iterator(); while (iter.hasNext()) { lists.add(iter.next()); }
下面是采用克隆的方式。
//创建一个集合,存放 ArrayList<Text> list = new ArrayList<Text>(); for (Text value : values) { //克隆 Text text = WritableUtils.clone(value,context.getConfiguration()); list.add(text); }
相关文章推荐
- Android更新机制(自己服务器和GooglePlay更新)
- mysql Emoji表情字符集转换
- mysql Emoji表情字符集转换
- Fuck you money
- JavaWeb开发之深入分析URL重定向的原理和特点(跟着龙哥学JavaWeb)
- 安装Cocoapods 报错ERROR: While executing gem
- Java 基本操作
- phpmyadmin,访问主页报错: Error during session start; please check your PHP and/or webserver log file and c
- Linux背景
- Android 应用:打包(签名文件)、代码混淆、应用加固、发布到应用商店
- 进程的地址空间
- <<web>>css背景需要对应面积
- 一个基于MINA框架应用的最简单例子
- java输入输出流小细节
- android rootfs的挂载流程
- NodeJS连接MongoDB数据库时报错的快速解决方法
- Hibernate基础介绍
- Python中安装numpy
- [主席树] BZOJ 3524 [Poi2014]Couriers BZOJ 2223 [Coci 2009]PATULJCI
- 一个Activity的显示过程总结(二)