[英]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.