您的位置:首页 > 其它

GraphChi之pagerank分析新浪微博用户

2013-07-06 23:20 423 查看
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。



图1



图2



图3



图4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: