发现 Scala Spark 类型不匹配的单元,需要 rdd.RDD
Scala Spark type missmatch found Unit, required rdd.RDD
我正在从用 scala 编写的 spark 项目中的 MySQL 数据库中读取 table。这是我的第一周,所以我真的不太健康。当我尝试 运行
val clusters = KMeans.train(parsedData, numClusters, numIterations)
我收到 parsedData 的错误消息:"type mismatch; found : org.apache.spark.rdd.RDD[Map[String,Any]] required: 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)
其中 dataframe_mysql 是从 sqlcontext.read.format("jdbc").option(....) function.
返回的任何内容
我应该如何转换我的单位以满足在火车功能中传递它的要求?
根据文档,我应该使用这样的东西:
data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
我是否应该将我的值转换为两倍?因为当我尝试 运行 时,我的项目上面的命令会崩溃。
谢谢!
删除尾随 .collect().foreach(println)
。在调用 collect
之后,您不再拥有 RDD - 它只是变成了一个本地集合。
随后,当您调用 foreach
时,它 returns Unit
- foreach 用于执行副作用,例如打印集合中的每个元素。等等
我正在从用 scala 编写的 spark 项目中的 MySQL 数据库中读取 table。这是我的第一周,所以我真的不太健康。当我尝试 运行
val clusters = KMeans.train(parsedData, numClusters, numIterations)
我收到 parsedData 的错误消息:"type mismatch; found : org.apache.spark.rdd.RDD[Map[String,Any]] required: 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)
其中 dataframe_mysql 是从 sqlcontext.read.format("jdbc").option(....) function.
我应该如何转换我的单位以满足在火车功能中传递它的要求?
根据文档,我应该使用这样的东西:
data.map(s => Vectors.dense(s.split(' ').map(_.toDouble))).cache()
我是否应该将我的值转换为两倍?因为当我尝试 运行 时,我的项目上面的命令会崩溃。
谢谢!
删除尾随 .collect().foreach(println)
。在调用 collect
之后,您不再拥有 RDD - 它只是变成了一个本地集合。
随后,当您调用 foreach
时,它 returns Unit
- foreach 用于执行副作用,例如打印集合中的每个元素。等等