Scala 为庞大的数据集寻找共同的朋友

Scala 为庞大的数据集寻找共同的朋友,scala,apache-spark,graph,bigdata,Scala,Apache Spark,Graph,Bigdata,我有一个巨大的表格数据集 userId跟在userId后面 1->2(即)1跟随2 1->3 3->5 2->3 我想知道两个人有多少共同的追随者 例如,在上述情况下,用户1和用户2之间的相互关注者的数量为1,因为(用户1和用户2都关注用户3) 对于一个庞大的数据集,最好的实现方法是什么。按用户id进行简单的收集,然后执行联接是行不通的。我正在考虑使用一些图形方法 假设您有一个表示为邻接列表的图形。在这个图上有一个操作获取给定顶点的邻域列表。顶点P1是第一人称,顶点P2是第二人称。现在您可以执行

我有一个巨大的表格数据集 userId跟在userId后面

1->2(即)1跟随2

1->3

3->5

2->3

我想知道两个人有多少共同的追随者 例如,在上述情况下,用户1和用户2之间的相互关注者的数量为1,因为(用户1和用户2都关注用户3)


对于一个庞大的数据集,最好的实现方法是什么。按用户id进行简单的收集,然后执行联接是行不通的。我正在考虑使用一些图形方法

假设您有一个表示为邻接列表的图形。在这个图上有一个操作
获取给定顶点的邻域列表
。顶点P1是第一人称,顶点P2是第二人称。现在您可以执行下一步操作(应使用哈希集进行快速交叉):


如果您使用use,您可以使用-以下是一个示例。

如果这是一个面试问题,那么您可能应该自己完成。:-)
p1_follows = HashSet(neighbors(P1))
p2_follows = neighbors(P2);
mutual_followers = p1_follows.intersect(p2_follows)