由于3个错误,我有以下两个函数没有编译:
RegressionMetrics:Cannot resolve constructor_.nonEmpty:Type mismatch, expected ((Double,Double))=>Boolean, actual ((Double,Double))=>Any
reduce(_+_):Cannot resolve symbol +.代码:
import org.apache.spark.mllib.evaluation.RegressionMetrics
//..
def getRMSE (rdd: RDD): Double = {
val metrics = new RegressionMetrics(rdd)
metrics.rootMeanSquaredError
}
def calculateRMSE(output: DStream[(Double, Double)]): Double = {
output.filter(_.nonEmpty).map(getRMSE).reduce(_+_)
}
test("Test1") {
// do some data preprocessing
// call the function calculateRMSE
}知道如何纠正这些错误吗?
P.S:奇怪的是,当我将val metrics = new RegressionMetrics(rdd)放入test中时,编译就没有任何问题了。
更新:
我能够通过将(Double,Double)添加到RDD来解决#1问题
def getRMSE(rdd : RDD[(Double, Double)]) : Double = {
val metrics = new RegressionMetrics(rdd)
metrics.rootMeanSquaredError
}发布于 2016-05-03 12:14:46
减少(职能):通过使用func函数聚合源DStream的每个RDD中的元素来返回单元素RDD的新DStream (该函数接受两个参数并返回一个)。函数应该是相联的,这样才能并行计算。
因此,calculateRMSE的正确签名应该是:
def calculateRMSE(output: DStream[(Double, Double)]): DStream[Double]https://stackoverflow.com/questions/37000762
复制相似问题