PageRank在Hadoop和spark下的实现以及对比
package org.apache.hadoop.PageRank; import java.util.ArrayList; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class PageRank { public static void run(){ } public static void main(String[] args) throws Exception {
double factor=0;
if(args.length>1){
factor=Double.parseDouble(args[0]);
}else{
factor=0.85;
}
String input="hdfs://10.107.8.110:9000/PageRank_input";
String output="hdfs://10.107.8.110:9000/PageRank/output";
ArrayList<String> pathList=new ArrayList<String>();
for(int i=0;i<20;i++){
Configuration conf = new Configuration();
conf.set("num","4");
conf.set("factor",String.valueOf(factor));
Job job = Job.getInstance(conf, "PageRank");
job.setJarByClass(org.apache.hadoop.PageRank.PageRank.class);
job.setMapperClass(MyMapper.class);
job.setReducerClass(MyReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileInputFormat.setInputPaths(job, new Path(input));
FileOutputFormat.setOutputPath(job, new Path(output));
input=output;
pathList.add(output);
output=output+1; System.out.println("the "+i+"th iterator is finished");
job.waitForCompletion(true);
}
for(int i=0;i<pathList.size()-1;i++){
Configuration conf=new Configuration();
Path path=new Path(pathList.get(i));
FileSystem fs=path.getFileSystem(conf);
fs.delete(path,true);
}
} } package org.apache.hadoop.PageRank; import java.io.IOException;
import java.util.HashMap;
import java.util.Map; import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper; public class MyMapper extends Mapper<LongWritable, Text, Text, Text> { public void map(LongWritable ikey, Text ivalue, Context context)
throws IOException, InterruptedException {
String[] line=ivalue.toString().split(":");
String content=line[1];
int num=content.split(",").length;
String word=line[0].split(" ")[0];
String alaph=line[0].split(" ")[1];
context.write(new Text(word),new Text("content:"+content));
for(String w:content.split(",")){
context.write(new Text(w),new Text("link:"+word+" "+String.valueOf(1.0/num)));
context.write(new Text(w),new Text("alaph:"+word+" "+alaph));
}
} } package org.apache.hadoop.PageRank; import java.io.IOException;
import java.util.HashMap;
import java.util.Map; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer; public class MyReducer extends Reducer<Text, Text, Text, Text> { public void reduce(Text _key, Iterable<Text> values, Context context)
throws IOException, InterruptedException {
// process values
Configuration conf=context.getConfiguration();
double factor=Double.parseDouble(conf.get("factor"));
int num=Integer.parseInt(conf.get("num")); Map<String,Double> alaph=new HashMap<String,Double>();
Map<String,Double> link=new HashMap<String,Double>(); String content="";
for (Text val : values) {
String[] line=val.toString().split(":");
if(line[0].compareTo("content")==0){
content=line[1];
}else {
String[] s=line[1].split(" ");
double d=Double.parseDouble(s[1]);
if(line[0].compareTo("alaph")==0){
alaph.put(s[0],d);
}else if(line[0].compareTo("link")==0){
link.put(s[0],d);
}
}
}
double sum=0;
for(Map.Entry<String,Double> entry:alaph.entrySet()){
sum+=link.get(entry.getKey())*entry.getValue();
} System.out.println(" ");
System.out.println("sum is "+sum);
System.out.println(" ");
double result=factor*sum+(1-factor)/num;
context.write(_key,new Text(String.valueOf(result)+":"+content)); } }
def f(x):
links=x[1][0]
rank=x[1][1]
n=len(links.split(","))
result=[]
for s in links.split(","):
result.append((s,rank*1.0/n))
return result file="hdfs://10.107.8.110:9000/spark_test/pagerank.txt" data=sc.textFile(file)
link=data.map(lambda x:(x.split(":")[0],x.split(":")[1]))
n=data.count()
rank=link.mapValues(lambda x:1.0/n) for i in range(10):
rank=link.join(rank).flatMap(f).reduceByKey(lambda x,y:x+y).mapValues(lambda x:0.15/n+0.85*x)









PageRank在Hadoop和spark下的实现以及对比的更多相关文章
- Ubuntu14.04或16.04下Hadoop及Spark的开发配置
对于Hadoop和Spark的开发,最常用的还是Eclipse以及Intellij IDEA. 其中,Eclipse是免费开源的,基于Eclipse集成更多框架配置的还有MyEclipse.Intel ...
- hadoop+tachyon+spark的zybo cluster集群综合配置
1.zybo cluster 架构简述: 1.1 zybo cluster 包含5块zybo 开发板组成一个集群,zybo的boot文件为digilent zybo reference design提 ...
- Hadoop与Spark比较
先看这篇文章:http://www.huochai.mobi/p/d/3967708/?share_tid=86bc0ba46c64&fmid=0 直接比较Hadoop和Spark有难度,因为 ...
- 2分钟读懂Hadoop和Spark的异同
谈到大数据框架,现在最火的就是Hadoop和Spark,但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,倒底现在业界都在使用哪种技术?二者间究竟有哪些异同?它们各自解决了哪些问题? ...
- 成都大数据Hadoop与Spark技术培训班
成都大数据Hadoop与Spark技术培训班 中国信息化培训中心特推出了大数据技术架构及应用实战课程培训班,通过专业的大数据Hadoop与Spark技术架构体系与业界真实案例来全面提升大数据工程师 ...
- 安装Hadoop及Spark(Ubuntu 16.04)
安装Hadoop及Spark(Ubuntu 16.04) 安装JDK 下载jdk(以jdk-8u91-linux-x64.tar.gz为例) 新建文件夹 sudo mkdir /usr/lib/jvm ...
- 老李分享:大数据框架Hadoop和Spark的异同 1
老李分享:大数据框架Hadoop和Spark的异同 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...
- hadoop+hive+spark搭建(一)
1.准备三台虚拟机 2.hadoop+hive+spark+java软件包 传送门:Hadoop官网 Hive官网 Spark官网 一.修改主机名,hosts文件 主机名修改 hostnam ...
- 深度:Hadoop对Spark五大维度正面比拼报告!
每年,市场上都会出现种种不同的数据管理规模.类型与速度表现的分布式系统.在这些系统中,Spark和hadoop是获得最大关注的两个.然而该怎么判断哪一款适合你? 如果想批处理流量数据,并将其导入HDF ...
随机推荐
- springAOP 的pointcut
<bean id="amqFilter" class="com.xxx.hotel.base.aspectj.AmQConsumerFilter"/> ...
- java基础概念经典题目汇集
1.下面是People和Child类的定义和构造方法,每个构造方法都输出编号.在执行new Child("mike")的时候都有哪些构造方法被顺序调用?请选择输出结果 ( ) cl ...
- 判断Android应用是否安装、运行
本文介绍3个方法,判断手机上是否安装了某应用.该应用是否正在运行.获取手机某个APK文件的安装Intent.启动该Intent就可以直接安装该APK. /** * 判断应用是否已安装 * * @par ...
- UVALive 2056 Lazy Math Instructor(递归处理嵌套括号)
因为这个题目说明了优先级的规定,所以可以从左到右直接运算,在处理嵌套括号的时候,可以使用递归的方法,给定每一个括号的左右边界,伪代码如下: int Cal(){ if(括号) sum += Cal( ...
- Sea.Js使用入门
1.Sea.Js是什么 seajs相对于RequireJs与LabJS就比较年轻,2010年玉伯发起了这个开源项目,SeaJS遵循CMD规范,与RequireJS类似,同样做为模块加载器.示例 // ...
- 解决phpmyadmin 点击表结构时卡顿、一直加载、打不开的问题
本文内容是转自其它站点,亲测可用. 第一步,打开 ./version_check.php文件,找到以下代码: $save = true; $file ='http://www.phpmyadmin.n ...
- 优化のzencart URL &zenid=.....
zencart URL后面带有一串&zenid=.....解决方案 发布时间:2013年3月16日 次浏览:106 经木木测试,此方法可用. ================= 最近一个客户的 ...
- CentOS服务端口开放
#例如开放81端口iptables -I INPUT -i eth0 -p tcp --dport 81 -j ACCEPTiptables -I OUTPUT -o eth0 -p tcp --sp ...
- java HTTP请求 DefaultHttpClient is deprecated
最近在使用Apache的httpclient的时候,maven引用了最新版本4.3,发现Idea提示DefaultHttpClient等常用的类已经不推荐使用了,之前在使用4.2.3版本的时候,还没有 ...
- zf-关于即将过期提示字符串的修改
Struts2中的 addFieldError(str1,str2); 自带输出 str1= [str2] 这样子是自带输出的 但是如果 要把=[]替换掉怎么办呢 当时想的很复杂,现在知道了,其实很简 ...