首页 > 代码库 > mapreduce中reduce中的迭代器只能调用一次!
mapreduce中reduce中的迭代器只能调用一次!
亲测,只能调用一次,如果想想在一次reduce重复使用迭代器中的数据,得先取出来放在list中然后在从list中取出来!!多次读取reduce函数中迭代器的数据
public static class FindFriendReducer extends Reducer<Text, AllInfoBean, AllInfoBean, NullWritable> { protected void reduce(Text Keyin, Iterable<AllInfoBean> values, Reducer<Text, AllInfoBean, AllInfoBean, NullWritable>.Context context) throws IOException, InterruptedException { AllInfoBean allInfoBean = new AllInfoBean(); allInfoBean.setPid(Keyin.toString()); for (AllInfoBean bean : values) { if (bean.getOderid() != 0) continue; allInfoBean.setPname(bean.getPname()); allInfoBean.setCategory_id(bean.getCategory_id()); allInfoBean.setPrice(bean.getPrice()); } for (AllInfoBean bean : values) { context.write(bean, NullWritable.get()); } } }
这样是取不出来数据的!!
就 象jdbc 的resultset一样只能取一次
mapreduce中reduce中的迭代器只能调用一次!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。