我正在尝试使用 Spark 和 Scala 进行数据分析。我的问题是如何在图表中获得三角形?我的意思不是graphx附带的三角形计数,而是组成三角形的实际节点。
假设我们有一个图形文件,我能够在 scala 中计算三角形,但同样的技术不适用于 spark,因为我必须使用 RDD 操作。
我提供给函数的数据是一个复杂的列表,由 src 和该源的目的地列表组成;前任。调整(5,列表(1,2,3)),调整(4,列表(9,8,7)),...
我的 scala 版本是这样的:
(Paths: List[Adj])
Paths.flatMap(i=> Paths.map(j => Paths.map(k => {
if(i.src != j.src && i.src!= k.src && j.src!=k.src){
if(i.dst.contains(j.src) && j.dst.contains(k.src) && k.dst.contains(i.src)){
println(i.src,j.src,k.src) //3 nodes that make a triangle
}
else{
()
}
}
})))
输出将类似于:
(1,2,3) (4,5,6) (2,5,6)
总之,我想要相同的输出,但在火花环境中执行。此外,我正在寻找一种更有效的方法来保存有关邻接关系的信息,例如键映射,然后通过键或其他方式减少。由于 spark 环境需要一种完全不同的方法来处理每个问题(大数据操作),如果您能解释一下这种思维方式并简要介绍一下您使用的功能,我将不胜感激。
谢谢你。