首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型错配,预期((双,双)=>Boolean,实际((双,双))=>Any

类型错配,预期((双,双)=>Boolean,实际((双,双))=>Any
EN

Stack Overflow用户
提问于 2016-05-03 09:44:01
回答 1查看 621关注 0票数 0

由于3个错误,我有以下两个函数没有编译:

  1. RegressionMetricsCannot resolve constructor
  2. _.nonEmptyType mismatch, expected ((Double,Double))=>Boolean, actual ((Double,Double))=>Any

  1. reduce(_+_)Cannot resolve symbol +.

代码:

代码语言:javascript
复制
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问题

代码语言:javascript
复制
  def getRMSE(rdd : RDD[(Double, Double)]) : Double = {
    val metrics = new RegressionMetrics(rdd)
    metrics.rootMeanSquaredError
  }
EN

回答 1

Stack Overflow用户

发布于 2016-05-03 12:14:46

减少(职能):通过使用func函数聚合源DStream的每个RDD中的元素来返回单元素RDD的新DStream (该函数接受两个参数并返回一个)。函数应该是相联的,这样才能并行计算。

因此,calculateRMSE的正确签名应该是:

代码语言:javascript
复制
def calculateRMSE(output: DStream[(Double, Double)]): DStream[Double]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37000762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档