如何在三重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)
})
我想找到 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)
})