繁体   English   中英

找到Scala Spark类型不匹配的单位,必需为rdd.RDD

[英]Scala Spark type missmatch found Unit, required rdd.RDD

我正在用scala编写的spark项目中从MySQL数据库读取表。 这是我的第一个礼拜,所以我真的不太适应。 当我试图跑步时

  val clusters = KMeans.train(parsedData, numClusters, numIterations)

我收到parsedData的错误消息:“类型不匹配;找到:org.apache.spark.rdd.RDD [Map [String,Any]]必需:org.apache.spark.rdd.RDD [org.apache.spark .mllib.linalg.Vector]”

我的解析数据是像上面这样创建的:

 val parsedData = dataframe_mysql.map(_.getValuesMap[Any](List("name", "event","execution","info"))).collect().foreach(println)

其中sqlcontext.read.format("jdbc").option(....) function.是从sqlcontext.read.format("jdbc").option(....) function.

我应该如何转换我的单元以使其符合在火车功能中通过的要求?

根据文档,我应该使用这样的东西:

data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()

我应该将自己的价值观翻倍吗? 因为当我尝试运行上面的命令时,我的项目将崩溃。

谢谢!

删除尾随的.collect().foreach(println) 调用collect ,您将不再拥有RDD-它只是变成了本地集合。

随后,当您调用foreach它返回Unit -foreach用于产生副作用,例如打印集合中的每个元素。 等等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM