Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何转换RDD<;字符串>;到RDD<;向量>;火花?_Scala_Apache Spark_Rdd - Fatal编程技术网

Scala 如何转换RDD<;字符串>;到RDD<;向量>;火花?

Scala 如何转换RDD<;字符串>;到RDD<;向量>;火花?,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,我有一个文件,每一行都是这样的 info1,info2 info3,info4 ... 扫描后,我想运行k-means算法: val rawData = sc.textFile(myFile) val converted = convertToVector(rawData) val kmeans = new KMeans() kmeans.setK(10) kmeans.setRuns(10) kmeans.setEpsilon(1.0e-6) val model

我有一个文件,每一行都是这样的

info1,info2
info3,info4
...
扫描后,我想运行k-means算法:

  val rawData = sc.textFile(myFile)
  val converted = convertToVector(rawData)
  val kmeans = new KMeans()
  kmeans.setK(10)
  kmeans.setRuns(10)
  kmeans.setEpsilon(1.0e-6)
  val model = kmeans.run(rawData) -> problem: k-means accepts only RDD<Vector>
对如何实现这一目标有何建议


提前感谢。

考虑到输入文件的每一行都是由逗号分隔的字符串表示的假设向量,这是一个非常基本的操作

只需映射每个字符串entrie,在分隔符上拆分它,然后从中创建密集向量:

val parsedData = rawData.map(s => Vectors.dense(s.split(',').map(_.toDouble)))

谢谢,所以如果我想转换为RDD,我总是必须使用
向量。稠密的
?除非你的向量实际上是稀疏的,并且你有一个稀疏的向量表示作为输入文件,否则你必须使用稠密的。这个
映射(u.toDouble)
?IMHO,将字符串转换为双精度?考虑到信息[1-n]是数值,您可以直接将值转换为双精度。但这里似乎不是这样,是吗?这些信息是双倍的
val parsedData = rawData.map(s => Vectors.dense(s.split(',').map(_.toDouble)))