Для данных потоковой передачи DStream[(Double, Double)]
, как я могу оценить ошибку квадрата среднего квадрата? См. Мой код ниже. Линия math.sqrt(summse)
, где у меня есть проблема (код не компилируется):Как использовать math.sqrt для 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: код не компилируется: Cannot resolve reference sqrt with such signature. Expected: Double, Actual: Unit
Так в чем проблема? Не компилируется, не выполняется время выполнения или неправильное значение? – thoredge
@thoredge: код не компилируется: 'Невозможно разрешить ссылочный sqrt с такой подписью. Ожидаемое: Double, Actual: Unit' – Klue
Что вы хотите сделать? calculateRMSE of DStream, в какой момент времени? DStreams - бесконечные потоки, поэтому вы не можете ожидать выполнения операции 'f (DStream)' и получить из нее скалярное значение, потому что результат будет зависеть от времени. – maasg