我正在用scala编写的spark项目中的MySQL数据库中读取一个表。这是我的第一周,所以我真的不适合。当我试图运行Scala Spark类型错配找到单元,需要rdd.RDD
val clusters = KMeans.train(parsedData, numClusters, numIterations)
我得到了parsedData一个错误,指出:“类型不匹配;发现:org.apache.spark.rdd.RDD [地图[字符串,任何]要求:组织。 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)
其中dataframe_mysql是无论是从sqlcontext.read.format("jdbc").option(....) function.
返回
我该如何将我的单位转换为符合要求才能通过火车功能?
根据文件,我应该使用这样的事情:
data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
我应该改变我的价值观翻番?因为当我尝试运行上面的命令时,我的项目会崩溃。
谢谢!
是的!我这样做,但它不匹配没有它: 类型不匹配;找到:org.apache.spark.rdd.RDD [Map [String,Any]] required:org.apache.spark.rdd.RDD [org.apache.spark.mllib.linalg.Vector] – Kratos
对于KMeans,您需要把你的所有功能变成双打,并创建一个矢量。 MLLib指南中的示例按“”分割,因为输入由空格分隔,并且它们是使用map(_。toDouble)转换的数值。 –