向MapReduce转换:形成推荐
来源:互联网 发布:vue.js 树形菜单插件 编辑:程序博客网 时间:2024/05/22 09:51
<strong><span style="font-size:18px;">/*** * @author YangXin * @info 向MapReduce转换:形成推荐 ,处理来自向量的推荐结果。 */package unitSix;import java.io.IOException;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.List;import java.util.PriorityQueue;import java.util.Queue;import org.apache.hadoop.mapreduce.Reducer;import org.apache.mahout.cf.taste.hadoop.RecommendedItemsWritable;import org.apache.mahout.cf.taste.impl.recommender.ByValueRecommendedItemComparator;import org.apache.mahout.cf.taste.impl.recommender.GenericRecommendedItem;import org.apache.mahout.cf.taste.recommender.RecommendedItem;import org.apache.mahout.math.VarLongWritable;import org.apache.mahout.math.Vector;import org.apache.mahout.math.VectorWritable;import org.apache.mahout.math.map.OpenIntLongHashMap;public class AggregateAndRecommendReducer extends Reducer<VarLongWritable, VectorWritable, VarLongWritable, RecommendedItemsWritable>{public void reduce(VarLongWritable key, Iterable<VectorWritable> values, Context context) throws IOException, InterruptedException{int recommendationsPerUser = 10; OpenIntLongHashMap indexItemIDMap = null;Vector recommendationVector = null;for(VectorWritable vectorWritable : values){recommendationVector = recommendationVector == null ? vectorWritable.get() : recommendationVector.plus(vectorWritable.get());}Queue<RecommendedItem> topItems = new PriorityQueue<RecommendedItem>(recommendationsPerUser + 1, Collections.reverseOrder(ByValueRecommendedItemComparator.getInstance()));Iterator<Vector.Element> recommendationVectorIterator = recommendationVector.nonZeroes().iterator();while(recommendationVectorIterator.hasNext()){Vector.Element element = recommendationVectorIterator.next();int index = element.index();float value = (float)element.get();if(topItems.size() < recommendationsPerUser){topItems.add(new GenericRecommendedItem(indexItemIDMap.get(index), value));}else if(value > topItems.peek().getValue()){topItems.add(new GenericRecommendedItem(indexItemIDMap.get(index), value));topItems.poll();}}List<RecommendedItem> recommendations = new ArrayList<RecommendedItem>(topItems.size());recommendations.addAll(topItems);Collections.sort(recommendations, ByValueRecommendedItemComparator.getInstance());context.write(key, new RecommendedItemsWritable(recommendations));}}</span></strong>
0 0
- 向MapReduce转换:形成推荐
- 向MapReduce转换:生成用户向量
- 向MapReduce转换:计算共现关系
- mapreduce推荐
- 向MapReduce转换:通过部分成绩计算矩阵乘法
- mapreduce实现推荐系统
- MapReduce实现推荐系统
- Hadoop MapReduce原理(推荐)
- mapreduce实现推荐系统
- MapReduce购物推荐引擎
- mapreduce向hbase写数据
- 向程序员推荐AutoHotkey
- MapReduce实现QQ好友推荐
- MapReduce学习之好友推荐
- ODPS MapReduce入门 - 推荐商品
- MapReduce实现QQ好友推荐
- 理解MapReduce 入门文章--推荐
- mapreduce实现QQ好友推荐
- Html 让两个div 显示在同一行
- CoAP协议学习——CoAP基础
- Apollo 配置详细步骤(Windows环境)
- 科大Linux内核分析之实验一
- ThinkPHP3.2.3的URL重写时遇到No input file specified的解决方法,htaccess规则问题
- 向MapReduce转换:形成推荐
- 2016太原网络营销师SEM(百度竞价)竞价的词怎样分类?
- ARC机制
- Java Web应用中调优线程池的重要性
- 从excel文件中获得数据,实现网站的批量查询数据功能
- htmlparser操作bean类提取html页面元素
- Java读取Properties文件的六种方法
- Salient Object Detection via Structured Matrix Decomposition
- iOS开发 ios9.0后友盟第三方分享, qq微信找不到设备