如何在三重RDD中找到最小值

时间:2016-04-27 15:28:09

标签: scala apache-spark rdd

我想找到RDD三元组的最小值。这就是我处理此任务的方法(保存到文件已完成验证)。

evalsRDD.coalesce(1)
            .map(e => "%.3f\t%d\t%.3f".format(e._1, e._2, e._3))
            .saveAsTextFile("data/streaming/test")

val minRMSE = evalsRDD.min()(new Ordering[(Any, Any, Double)]() {
  override def compare(x: (Any, Any, Double), y: (Any, Any, Double)): Double =
    Ordering[Double].compare(x._3, y._3) })

它说方法比较具有不兼容的类型。如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的compare方法必须返回Int,而不是Double,以覆盖Ordering中定义的方法。

如果你改变它,它就可以了:

val minRMSE = evalsRDD.min()(new Ordering[(Any, Any, Double)]() {
  override def compare(x: (Any, Any, Double), y: (Any, Any, Double)): Int =
    Ordering[Double].compare(x._3, y._3) 
})