Für die Streaming-Daten DStream[(Double, Double)]
, wie kann ich den quadratischen Mittelfehler schätzen? Siehe meinen Code unten. Die Linie math.sqrt(summse)
ist, wo ich ein Problem haben (der Code nicht kompiliert):Wie verwendet man math.sqrt für DStream [(Double, Double)]?
def calculateRMSE(output: DStream[(Double, Double)], n: DStream[Long]): Double = {
val summse = output.foreachRDD { rdd =>
rdd.map {
case pair: (Double, Double) =>
val err = math.abs(pair._1 - pair._2);
err*err
}.reduce(_ + _)
}
math.sqrt(summse)
}
UPDATE: Der Code lässt sich nicht kompilieren: Cannot resolve reference sqrt with such signature. Expected: Double, Actual: Unit
Also, was ist dein Problem? Kompiliert nicht, Laufzeitfehler oder falscher Wert? – thoredge
@thoredge: Der Code kompiliert nicht: 'Kann Referenz sqrt mit einer solchen Signatur nicht auflösen. Erwartet: Double, Actual: Unit' – Klue
Was möchten Sie tun? calcumeRMSE eines DStream, zu welchem Zeitpunkt? DStreams sind unendliche Streams. Sie können also nicht erwarten, eine Operation 'f (DStream)' auszuführen und einen Skalarwert daraus zu erhalten, da das Ergebnis von der Zeit abhängt. – maasg