spark scala中的键排序

vtwuwzda  于 2021-07-14  发布在  Spark
关注(0)|答案(0)|浏览(297)

我正在尝试计算网页的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)))  )
      }
    }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题