對於流數據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
你想做什麼?在什麼時間點計算DStream的RMSR? DStream是無限的流,所以你不能指望執行'f(DStream)'操作並從中獲得標量值,因爲結果將取決於時間。 – maasg