hadoop编程----寻找社交网络图中的三角关系

本文介绍了如何在Hadoop上利用MapReduce解决社交网络中的三角关系计数问题。首先,将有向图转换为无向图,然后通过设计ToUndirectedGraph、CountNum和CountDriver三个类来寻找和计数三角关系。实验过程包括上传和执行jar文件,最终通过web界面查看结果。
摘要由CSDN通过智能技术生成

实验背景

图的三角形计数问题是一个基本的图计算问题,是很多复杂网络分析(比如社交网络分析)的基础。目前图的三角形计数问题已经成为了Spark 系统中GraphX 图计算库所提供的一个算法级API。本次实验任务就是要在Hadoop 系统上实现Twitter 社交网络图的三角形计数任务。

有向图转化为无向图

如下图所示,社交网络中的关注关系一般为有向图,这里需要转化为无向图。转化思路为:如果IF (A->B) or (B->A) THEN A-B。只要A与B在有向图中存在一条有向边,便认为A与B在无向图中存在边。
这里写图片描述
在具体实现中我们用邻接表来记录无向图。图中每个节点用long值来表示的。在邻接表中我们设置:
如果A-B & A < B,则将B加入A的邻接表;
如果A-B & B < A,则将A加入B的邻接表;
这样得到的邻接表中A : linkNode1, linkNode2, linkNode3,…记录与A节点相邻的节点,并且A < min(linkNode1, linkNode2, …)也即A的邻接表中记录的节点,标志它们long值都比A的long值要大。

从关系表中寻找三角关系

对于一个三角关系A,B,C,我们需要寻找到A-B,B-C,C-A才能确认一个三角关系是否存在。从中可以发现节点A需要同时对应A-B以及A-C。所以想到的思路如下:
对于邻接表中的A:node1,node2,…,nodek,A-node1以及A-node

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值