我有一个庞大的表单数据集 userId跟随userId
1 - > 2(即)1跟随2
1 - > 3
3 - > 5
2 - > 3
这个想法是我想知道两个人有多少共同的追随者 例如,在上述情况下,用户1和用户2之间的相互关注者的数量是1,因为(用户1和用户2都跟随用户3)
什么是为大型数据集实现它的最佳方式。按用户ID简单收集,然后执行连接将无法正常工作。我正在考虑使用一些图表方法。
答案 0 :(得分:0)
假设您有一个表示为邻接列表的图表。您可以在此图get a list of the neighbors of a given vertex
上进行操作。 Vertex P1是第一人称,顶点P2是第二人称。现在你可以做下一步(应该使用哈希集来实现快速交集):
p1_follows = HashSet(neighbors(P1))
p2_follows = neighbors(P2);
mutual_followers = p1_follows.intersect(p2_follows)
如果您使用GraphFrame,则可以使用Motif finding - 这是一个示例Motif Finding: Counting Mutual Friends。