双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

Mapreduce topK问题总是只能得到一个结果,求解

king_ven king_ven 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

import java.io.IOException;
import java.util.TreeMap;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.DefaultStringifier;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;


public class TopK
{
private int topk;

public static class TopKMapper extends Mapper<LongWritable, Text, IntWritable, Text>
{
private TreeMap<IntWritable, Text> fatcats = new TreeMap<IntWritable, Text>();

public void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException
{
Configuration conf = context.getConfiguration();

Text topktext = DefaultStringifier.load(conf, "topk", Text.class);
int topk = Integer.parseInt(topktext.toString());

String[] str = value.toString().split("\t");

fatcats.put(new IntWritable(Integer.parseInt(str[0])), new Text(str[1]));
if(fatcats.size() > topk)
{
fatcats.remove(fatcats.firstKey());
}
}

@Override
protected void cleanup(Context context) throws IOException, InterruptedException
{
for(IntWritable key :fatcats.keySet())
{
context.write(key, fatcats.get(key));
}
}
}

public static class TopKReducer extends Reducer<IntWritable, Text, IntWritable, Text>
{
private TreeMap<IntWritable, Text> fatcats = new TreeMap<IntWritable, Text>();

public void reduce(IntWritable key, Iterable<Text>values, Context context)throws IOException, InterruptedException
{
Configuration conf = context.getConfiguration();

Text topktext = DefaultStringifier.load(conf, "topk", Text.class);
int topk = Integer.parseInt(topktext.toString());

for (Text str : values)
{
fatcats.put(key, str);
if(fatcats.size() > topk)
{
fatcats.remove(fatcats.firstKey());
}
}
}

@Override
protected void cleanup(Context context) throws IOException, InterruptedException
{
for(IntWritable key :fatcats.keySet())
{
context.write(key, fatcats.get(key));
}
}
}

public void run(String src, String dst) throws IOException
{
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://localhost:9000");

DefaultStringifier.store(conf, new Text(String.valueOf(topk)) ,"topk");

Job job = new Job(conf, "TopK");
job.setJarByClass(TopK.class);

//设置输入输出格式
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);

//设置Map、Combine和Reduce处理类
job.setMapperClass(TopKMapper.class);
job.setReducerClass(TopKReducer.class);
job.setCombinerClass(TopKReducer.class);

//设置输出类型
job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(Text.class);

job.setNumReduceTasks(1);

//注意这里的输入输出都应该是在HDFS下的文件或目录
FileInputFormat.addInputPath(job, new Path(src));
FileOutputFormat.setOutputPath(job, new Path(dst));

//开始运行
try {
job.waitForCompletion(true);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public TopK(int topk)
{
this.topk = topk;
}

public static void main(String[] args)
{
System.out.println(String.valueOf(10));

System.out.println(Integer.parseInt(String.valueOf(10)));

TopK topk = new TopK(10);
try {
topk.run("/count.txt", "/topk");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
...全文

相关推荐

基于MapReduce方法统计服务器日志topk数据.zip

人工智能-hadoop

博士僧小星

python topk()函数求最大和最小值实例

主要介绍了python topk()函数求最大和最小值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

weixin_38516270

Mapreduce-实践

(实践一)数值概要中combiner的作用 在前述数值概要的运用中,加入不同的combiner,测试不同环境下系统的性能,并给出分析、说明。 检查在内存优化模式下系统性能的区别。 (实践二)计算器计数 模式描述、计数器结构及性能分析。 示例:计算每个州的用户数 (实践三)MapReduce 布隆过滤器 过滤器训练、过滤器应用、结果验证及分析 (实践四)MapReduce Top 10模式示例 在ctrip数据集上进行Top 10排序。 (实践五)去重的用户—针对ctrip数据集去重 对ctrip数据集中的product-id进行去重操作

百里 Jess

十道海量数据处理面试题与十个方法大总结 面试必备

十道海量数据处理面试题与十个方法大总结 计算机专业面试必备 百度 腾讯 面试常问题目 希望没让大家失望

peiyingli

大数据应用-基于大数据的推荐算法研究.pptx

基于大数据的推荐算法研究 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第1页。 论文框架 2 TopKS算法 3 基于项目层次结构相似性的推荐算法 4 矩阵分解并行化 5 总结与展望 1 课题背景与研究意义 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第2页。 图书推荐 新闻推荐 亚马逊 当当网 淘宝网 央广网 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第3页。 课题背景 启发式的协同过滤 代表的方法:KNN 基于模型的协同协同过滤 代表的方法:矩阵分解 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第4页。 课题背景 余弦距离 皮尔逊相关系数 ……… user1(3, 2, ?, 4) user2(2, 3, ?, ?) user3(?, ?, 4, 3) user4(4, ?, ?, 1) user5(?, 5, 5, ?) 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第5页。 课题背景 . X21*y21 + x22* y22 + x23 * y23 3 u2 v2 . = 交替下降 梯度下降 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第6页。 研究意义 用户量猛增 项目(商品、新闻等)数量猛增 推荐算法的可扩展性不强 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第7页。 TopkS算法 采用余弦距离和皮尔逊相关公式累加性特点 引入倒排索引数据结构 结合TopK思想 TopKS是Top K Similarity的简写,即最大的前K个相似度。主要包含以下三部分: 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第8页。 TopkS算法 余弦距离 皮尔逊相关系数 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第9页。 TopkS算法 倒排索引 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第10页。 TopkS算法 计算u1和其他用户的相似度 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第11页。 TopkS算法 假设查找用户ui的最近邻用户,当前计算到用户ui和uj第k1个共同项目(i != j),而ui和uj有k个共同评分项目,则分为两种情况: 如果uj已经在最近邻列表LS中,则直接更新列表中的相似度; 如果uj不在最近邻列表LS中,则计算用户ui和uj可能的最大值,下面是余弦距离和皮尔逊相关系数可能的最大值: 余弦距离 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第12页。 TopkS算法 皮尔逊相关系数 计算出 之后, 是 从LS中剔除最小值,插入uj 把uj加入黑名单 否 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第13页。 TopkS算法 不同稀疏度对近邻计算的影响 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第14页。 TopkS算法 不同规模用户数量上的比较实验 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第15页。 TopkS算法 不同K值对执行时间的影响 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第16页。 基于项目层次结构相似性的推荐算法 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第17页。 基于项目层次结构相似性的推荐算法 相似度度量 节点之间的距离度量: 然后利用最短路径算法Dijkstra结合TopK思想找到最相近的项目; 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第18页。 基于项目层次结构相似性的推荐算法 三种算法效果对比 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第19页。 矩阵分解并行化 目标函数 采用梯度下降方法,V的更新公式通常是: 这里 注意: 是一个常数,对因子矩阵中的每个元素都一样 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第20页。 矩阵分解并行化 同理,用户因子矩阵U也可以近似为矩阵乘除的形式. , V的更新公式变为: 这里 把步长修改为因子矩阵中每个元素一个值,如下: 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第21页。 矩阵分解并行化 MapReduce编程模型 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第22页。 矩阵分解并行化 a11 a12 a13 a21 a22 a23 a31 a32 a33 a41 a42 a43 左矩阵A b11 b12 b13 b14 b21 b22 b23 b24 b31 b32 b33 b34 右矩阵B 内积法 外积法 分块矩阵乘法 c11 c12 c13 c14 c21 c22 c23 c24 c31 c32 c33 c34 c41 c42 c43 c44 结果矩阵

是空空呀
评论 2
收藏 已收藏
分享
返回顶部
king_ven
Eclipse 58,439 成员 49,457 内容