我有一个火花数据框。每行代表一个人,我想检索他们之间可能的联系。拥有链接的规则是,对于每个可能的对,如果它们具有相同的 prop1:String 并且 prop2:Int 的绝对差 < 5,则链接存在。我正在尝试了解使用数据框完成此任务的最佳方法。
我正在尝试检索索引 RDD:
val idusers = people.select("ID")
.rdd
.map(r => r(0).asInstanceOf[Int])
.zipWithIndex
val prop1users = people.select("ID")
.rdd
.map(r => (r(0).asInstanceOf[Int], r(1).asInstanceOf[String]))
val prop2users = people.select("ID")
.rdd
.map(r => (r(0).asInstanceOf[Int], r(2).asInstanceOf[Int]))
然后开始删除重复项,例如:
var links = idusers
.join(idusers)
.filter{ case (v1, v2) => v2._1 != v2._2 }
但后来我被困在检查 prop1 ......无论如何,有没有办法只使用数据框来完成所有这些步骤?