二跳邻居数:对大部分社交关系来说,只获得一跳的度分布远远不够,另一个重要的指标是二跳邻居数。例如,无秘App中好友的好友的秘密,传播范围更广,信息量更丰富。因此,二跳邻居数的统计是图谱体检中很重要的一个指标。对于二跳邻居的计算,GraphX没有给出现成的接口,需要自己设计和开发。目前使用的方法是:第一次遍历,所有点向邻居点传播一个带自身ID,生命值为2的消息;第二次遍历,所有点将收到的消息向邻居点再转发一次,生命值为1;最终统计所有点上,接收到的生命值为1的ID,并进行分组汇总,得到所有点的二跳邻居。
值得注意的是,进行这个计算之前,需要借助度分布将图中的超级节点去掉,不纳入二跳邻居数的计算。否则,这些超级节点会在第一轮传播后收到过多的消息而爆掉,同时它们参与计算,会影响与它们有一跳邻居关系的顶点,导致不能得到真正有效的二跳邻居数。本人刚接触Spark,想多看一些实例,希望各位前辈指教。