GraphChi之pagerank分析新浪微博用户

GraphChi由卡内基梅隆大学的Aapo Kyrola 博士生开发,是GraphLab项目的一个分支。该框架能够在单机上完成大数据的图计算。
项目地址:https://code.google.com/p/graphchi/
实例地址:http://code.google.com/p/graphchi/wiki/ExampleApps
其中的工具之一是pagerank,可以用它非常方便的对SNS的关系图(如新浪微博的好友关注图)进行分析。下面两篇文章就利用该工具对微博数据进行了分析,得出了用户的排名结果。
http://www.cnblogs.com/sing1ee/archive/2012/12/13/2811581.html
http://blog.sina.com.cn/s/blog_c2e02d1d01018qj7.html

安装:

1、下载graphchi:wget http://graphchi.googlecode.com/files/graphchi_src_v0.1.7b.tar.gz
2、tar zxvf graphchi_src_v0.1.7b.tar.gz
3、cd graphchi_v0.1.7b #后面称该目录为graphchi_ROOT
4、make example_apps/pagerank
make成功后将会在graphchi_ROOT/bin/example_apps/中生成可执行程序pagerank

运行方式:

需在graphchi_ROOT中运行,
bin/example_apps/pagerank file input-file <arg-label1> arg1 <arg-label2> arg2 ...
arg-label为参数标识,常用的有:
1、file 图数据文件
2、filetype 后面是图存储类型 edgelist或者adjacencylist
3、execthreads 计算的线程数
4、membudget_mb 加载图数据可使用的内存大小
5、niters 迭代计算的次数
示例:
bin/example_apps/pagerank file ../pg/part1_sort.txt 3 filetype edgelist execthreads 8 niters 10

数据格式:

graphchi支持两种数据格式:
EdgeListFormat:src dist1 value1 
AdjacencyListFormat:src 4 dist1 dist2 dist3 dist4
分析SNS关系图时,用EdgeListFormat更加方便处理,先将原始数据进行处理得到EdgeListFormat格式的数据,例如:
1 2
1 3
1 4
1 5
...

表示1关注了2、3、4、5,value值可以省略。


实验:

本文利用上面的工具进行了测试,测试的数据也是用的爬盟的新浪微博的用户信息数据(如图1所示的位原始数据),先对原始数据进行预处理,得到EdgeListFormat的关系图数据(如图2所示),这里需要注意的是GraphChi处理的id最大是2^32-1,而微博id太大无法处理,这里对微博id映射到从0开始递增的新id,映射关系如图3所示,最后运行pagerank程序得到最终的结果。实验的数据集包含100w+的微博用户信息,结果如图4所示,列出了rank值最高的20个用户的id、rank值和username。

GraphChi之pagerank分析新浪微博用户_第1张图片

图1

GraphChi之pagerank分析新浪微博用户_第2张图片

图2

GraphChi之pagerank分析新浪微博用户_第3张图片

图3

GraphChi之pagerank分析新浪微博用户_第4张图片

图4



你可能感兴趣的:(GraphChi之pagerank分析新浪微博用户)