我正在尝试计算网页的pageranks。这里的贡献是一个pairdd,valpageid作为键,double contrib作为值。
所以我的最后一行代码是这样的-
ranksRDD = contributions.map{
case(pageId, contrib) => (pageId.toString.toInt, (0.15/1000) + (0.85 * (contrib) )
}
这里我得到一个pairdd,pageid作为键,pageranks作为符号。现在我想根据关键字对我的rdd进行排序,并显示前10个网页的pageranks(PageID-0,1,2。。。9).
一种方法是分配一个减速机并执行takeordered(10)。但我有个错误-
没有类型为的隐式参数:排序[(any,double)]
这里有什么?为什么没有转换成int?我能做些什么来解决它?
我也尝试过使用sortbykey,但是我再次遇到一个错误:“cannot resolve symbol”,我尝试了import org.apache.spark.sparkcontext,但仍然无法使用
另外,有没有更简单或更好的方法来做到这一点?
//graphRDD - [(1,List(2)), (2, List(3,4)).... ]
//ranksRDD - [(1, 0.11), (2, 0.11).... ]
for (i <- 1 to 10) {
val contributions = graphRDD.join(ranksRDD).flatMap {
case (pageId, (links, rank)) =>
links.flatMap(dest => List((dest, rank / links.size), (pageId, 0.0)) )
}.reduceByKey(_+_)
val mass = contributions.lookup(0)(0)
ranksRDD = contributions.map{
case(pageId, contrib) => if (pageId == 0) (pageId.toString.toInt,0.0)
else (pageId.toString.toInt, (0.15/k2) + (0.85 * (contrib + (mass.toDouble/k2))) )
}
}
暂无答案!
目前还没有任何答案,快来回答吧!