好友关系:
1 2
1 3
1 4
1 5
1 6
1 7
1 8
2 3
3 9
9 10
7 9
2 7
我想实现如下功能,求 3 节点与它的二跳节点的好友之间的共同好友个数,实现类似 QQ 好友推荐功能:
3 和 5 的共同好友个数为:1
3 和 10 的共同好友个数为:1
3 和 6 的共同好友个数为:1
3 和 7 的共同好友个数为:3
3 和 8 的共同好友个数为:1
3 和 4 的共同好友个数为:1
————————————————————————————————————
排序之后,这里可以给 3 推荐 7 认识。
- 简单的通过 for 循环(得到好友节点的会触发 action)算出这样的关系在 spark 中估计也没什么优势吧(千万节点,亿条关系)?但是求二跳节点通过 graphx 自带的 api 还是有很大优势的。
- saprk graphx 可以通过它自带的 pregel API 直接求出一个节点的一跳到 N 跳的节点。
- neo4j 一条语句实现如下:
match (n:Person {name:"A"})-[:Follow]->(m)<-[:Follow]-(b) with n,b,count(m) as summ where (not (n)-[:Follow]-(b) ) return b,summ
- 腾讯的两篇文章参考