2016-04-27 2 views
1

Ich möchte Mindestwert über RDD Tripel finden. So gehe ich diese Aufgabe an (das Speichern in Datei erfolgt zur Validierung).So finden Sie Min-Wert in Triple-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) }) 

Es besagt, dass Methode vergleichen inkompatiblen Typ hat. Wie kann ich dieses Problem lösen?

+0

welche Art ist 'evalsRDD'? –

+0

@Tzach Zohar: Es ist vom Typ 'RDD [(Any, Any, Double)]' ' – Klue

Antwort

1

Ihre compare-Methode muss eine Int, nicht eine Double zurückgeben, um die in Ordering definierte Methode zu überschreiben.

Wenn Sie es so tun ändern, es funktioniert:

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) 
})