【问题标题】:Reading a matrix from a text file as RDD of vectors从文本文件中读取矩阵作为向量的 RDD
【发布时间】:2014-10-28 17:21:54
【问题描述】:

我正在尝试从制表符分隔的文本文件中逐行读取一个大的双精度矩阵。这是在 Scala/Apache Spark 中。

如果我执行以下操作:

val obs = sc.textFile("path_to_text_file")

我得到 obs:org.apache.spark.rdd.RDD[String]

但是,要求是具有向量的 RDD。你愿意帮忙吗?

感谢和问候,

【问题讨论】:

  • 关于你拥有什么和你想要什么的更多信息可能会有所帮助。 (分隔符,是逐行还是逐列;双精度向量的 RDD,但是逐行还是逐列?)
  • 非常感谢,Gábor。我相应地编辑了问题......
  • 更具体地说,我收到以下错误:
  • [错误] .../test/src/main/scala/mult_gaus.scala:22:类型不匹配; [错误] 发现:org.apache.spark.rdd.RDD[String] [错误] 需要:org.apache.spark.rdd.RDD[org.apache.spark.mllib.linalg.Vector]

标签: scala apache-spark


【解决方案1】:

这样的事情可能对你有用:

final val SEPARATOR_AS_REGEX = ";"//Replace it with your separator regex
obs.map(line => line.split(SEPARATOR_AS_REGEX).map(
    //Parse the individual elements
    arr => arr.map(s => parseDouble(s))
  ).map(ds => new DenseVector(ds)))//Convert to the expected type

【讨论】:

  • 嘿,你知道如何在pyspark中使用这个逻辑吗?我想在 pyspark 中创建一个向量的 RDD 来处理多元统计分析部分。有什么建议吗?
猜你喜欢
  • 2018-03-10
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
相关资源
最近更新 更多