寻找巨大数据集的共同朋友

时间:2017-10-24 00:20:04

标签: scala apache-spark graph bigdata

我有一个庞大的表单数据集 userId跟随userId

1 - > 2(即)1跟随2

1 - > 3

3 - > 5

2 - > 3

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

什么是为大型数据集实现它的最佳方式。按用户ID简单收集,然后执行连接将无法正常工作。我正在考虑使用一些图表方法。

1 个答案:

答案 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