对于流数据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