首页 > 代码库 > PageRank算法的MapReduce实现

PageRank算法的MapReduce实现

假设目前需要排名计算的网页只有4个:数据如下:

baidu	10.00 google,sina,nefu
google	10.00 baidu
sina	10.00 google
nefu	10.00 sina,google

1. baidu  存在三个外链接

2.google 存在1个外链接

3.sina 存在1个外链接

4.nefu. 存在2个外链接

由数据可以看出:所有链接都指向了google,所以google的PR应该最高,而由google指向的baidu的PR值 应该也很高。

代码如下:

package PageRank;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
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.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner;

public class PageRank {
	/**
	 * @author XD
	 */
	static enum PageCount{
		Count,TotalPR
	}
	public static class  Map extends Mapper < LongWritable , Text , Text , Text >{
		protected void map(LongWritable key, Text value , Context context) throws IOException, InterruptedException{
			context.getCounter(PageCount.Count).increment(1);
			String[] kv = value.toString().split("\t");
			String _key = kv[0];
			String _value = http://www.mamicode.com/kv[1];>
最后输出结果如下:

技术分享


PageRank算法的MapReduce实现