Iによる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:test
の内部にval metrics = new RegressionMetrics(rdd)
を入れても奇妙なことは問題なくコンパイルできます。
UPDATE:私は追加することによって、問題の#1を解決することができた
(Double,Double)
RDD
へ:
def getRMSE(rdd : RDD[(Double, Double)]) : Double = {
val metrics = new RegressionMetrics(rdd)
metrics.rootMeanSquaredError
}
スプリットこのライン 'output.filter(_空ではない。).MAP(getRMSE).reduce(_ _ +)'の配列にval = mapped.reduce(...) 'を呼び出し、型を調べます。 –