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

How to find min value in triple 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) })

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

您的 compare 方法必须 return 一个 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) 
})