Вот мой код: implray pageRank algo:
def pageRank(sc: SparkContext): Unit = {
//Init
val links = xxx//data type: String, List[String]
var ranks = links.mapValues(_ => 1.0)
//Iteration
for (i <- 0 until iterCnt) {
val contributions = links.join(ranks)
//use partialFunc
.flatMap{
case (_, (linkList, rank)) =>
val tuples = linkList.map(dest => (dest, rank / linkList.size))
tuples
}
ranks = contributions.reduceByKey((x, y) => x + y)
.mapValues(v => {
(1 - alpha) + alpha * v
})
}
}
Я хочу использовать функцию ниже, чтобы заменить partialFunction на flatmap:
val tupleFunc = (_: String, linkRank:(List[String], Double)) => {
val linkList = linkRank._1
val rank = linkRank._2
linkList.map(dest => (dest, rank / linkList.size))
}
Но я получил " type list (ошибка): found: (String, (List [String], Double)) => List [(String, Double)] required: ((String, (List [String], Double))) => TraversableOnce [? ]
Я что-то пропустил?