scala – Spark:输入一个向量
发布时间:2020-12-16 19:13:27 所属栏目:安全 来源:网络整理
导读:我陷入了火花,我对矢量有问题 ????import org.apache.spark.mllib.linalg.{Vectors,Vector} 我的程序输入是一个文本文件,包含RDD(Vector)的输出: dataset.txt: [-0.5069793074881704,-2.368342680619545,-3.401324690974588][-0.7346396928543871,-2.34079
我陷入了火花,我对矢量有问题
????import org.apache.spark.mllib.linalg.{Vectors,Vector} 我的程序输入是一个文本文件,包含RDD(Vector)的输出: [-0.5069793074881704,-2.368342680619545,-3.401324690974588] [-0.7346396928543871,-2.3407983487917448,-2.793949129209909] [-0.9174226561793709,-0.8027635530022152,-1.701699021443242] [0.510736518683609,-2.7304268743276174,-2.418865539558031] 所以,尝试做的是: val rdd = sc.textFile("/workingdirectory/dataset") val data = rdd.map(s => Vectors.dense(s.split(',').map(_.toDouble))) 我有错误,因为它读取[0.510736518683609作为数字. 解决方法
给定输入,您可以做的最简单的事情是使用Vectors.parse:
scala> import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.linalg.Vectors scala> Vectors.parse("[-0.50,-2.36,-3.40]") res14: org.apache.spark.mllib.linalg.Vector = [-0.5,-3.4] 它也适用于稀疏表示: scala> Vectors.parse("(10,[1,5],[0.5,-1.0])") res15: org.apache.spark.mllib.linalg.Vector = (10,-1.0]) 将它与您的数据相结合,您只需要: rdd.map(Vectors.parse) 如果您希望格式错误/空行,可以使用Try包装它: import scala.util.Try rdd.map(line => Try(Vectors.parse(line))).filter(_.isSuccess).map(_.get) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读