首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DStream[Double,Double]转换为RDD[(Double,Double)]

将DStream[Double,Double]转换为RDD[(Double,Double)]
EN

Stack Overflow用户
提问于 2016-04-27 22:37:15
回答 1查看 273关注 0票数 1

我需要对流数据训练一个线性回归模型。我使用textFileStream读取流数据。但问题是RegressionMetrics接受RDD[(Double, Double)],而output的格式是DStream[Double,Double]。如何将output转换为RDD[(Double, Double)]以便能够使用RegressionMetrics

代码语言:javascript
复制
val model = new StreamingLinearRegressionWithSGD()
      .setInitialWeights(Vectors.dense(0.0, 0.0))
      .setStepSize(0.2)
      .setNumIterations(25)

    trainingData = ssc.textFileStream("/training/data/dir").map(LabeledPoint.parse)
testData = ssc.textFileStream("/training/data/dir").map(LabeledPoint.parse)

model.trainOn(trainingData)

val output = model.predictOnValues(testData.map(lp => (lp.label, lp.features)))

val metrics = new RegressionMetrics(output) 
val rmse = metrics.rootMeanSquaredError
EN

回答 1

Stack Overflow用户

发布于 2016-04-28 16:43:13

每个DStream都包含一个底层的RDD (每个数据批次对应一个单独的RDD),可以使用foreachRDD方法进行访问:

代码语言:javascript
复制
model.predictOnValues(testData.map(lp => (lp.label, lp.features))).foreachRDD { rdd =>
  val metrics = new RegressionMetrics(rdd)
  val rmse = metrics.rootMeanSquaredError
  // do something with `rmse` here
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36893041

复制
相关文章

相似问题

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