1 pagerank
a b d b c c a b d b c
需要计算趋于稳定阶段的pr值
先考虑main 是一个多次反复拿上一次任务输出 当做输入路径提交任务的过程 2、为了趋于稳定 需要那当前的rp值和上一次rp值计算 当趋于稳定时 可以停止提交任务 。所以 计算rp稳定可以在reducer里完成 在main里做判断 完成则跳出无限循环 3 可以定义context的计数器完成 job.getCounters().findCounter(myCounter.MY_COUNTER).getValue(); 4、在main里可以使map阶段的接收类型<偏移量,value> -> <\t的前一组字符,\t的后面字符> job.setInputFormatClass(KeyValueTextInputFormat.class);
a,b d b,c c,a b d,b c 在map端 完成b,1/2 d,1/2 ....的计算输出 为了reduce新老的计算 还要输出 a , 1/2 b d 同时还要考虑到第一次进来的数据 处理的问题
在reducer阶段 会接到 b,1/2 和 a, 1/2 b d 两种数据 拆分后分别计算 最后形成新的 a, 1/4 b d 的形式 输出 (因为要做下一轮回的map输入)最后 在main中可以在输出路径中加一个执行次数的变量conf.setInt("runCount", index); 吧index拼接在输出路径的后面完成每次的输入是上一次的输出。
理解 如何转换键值对
2 tf-idf
分3步 第一步 统计分词后的词 a-文件编号,1 D 文件总数 map中读一行即一个文件
第二步 逆向文件频率 分词,1
第三步 取 1 2 结果计算tf-idf