Scala-RDD[string]到RDD[vector]

Scala-RDD[string]到RDD[vector],scala,apache-spark,Scala,Apache Spark,我是新来的。我需要从“data.txt”文件(大小:1.84 GB)中以有组织的形式提取数据的帮助。我使用的是scala-2.10.4和spark-1.1.0 data.txt的内容如下所示 原子000000000000040000000117.80815.749649-0.54815.9994 原子0000000 1 00247690 0000000 2 20.9489 12.0511 5.4639 0.4238 1.008 data.txt文件中约有300k个原子,具有相同的图案,每帧中约有

我是新来的。我需要从“data.txt”文件(大小:1.84 GB)中以有组织的形式提取数据的帮助。我使用的是scala-2.10.4和spark-1.1.0

data.txt的内容如下所示

原子000000000000040000000117.80815.749649-0.54815.9994

原子0000000 1 00247690 0000000 2 20.9489 12.0511 5.4639 0.4238 1.008

data.txt文件中约有300k个原子,具有相同的图案,每帧中约有286890个原子(第二个属性)。i、 例如,第00000000帧包含286890个原子,第00000001帧包含286890个原子

其中:

  • 第一个属性只是告诉您它是atom条目还是HEAD条目(每个条目只有一个HEAD条目) 框架,并且它具有一些系统属性/信息)
  • 第二个属性是“帧编号”
  • 第三个属性是“原子ID/编号”
  • 第四个属性是“原子类型”
  • 第五、第六和第七属性是原子的位置向量(x、y、z)
  • 八属性是原子的电荷
  • 第九个属性是原子的质量
我需要一帧一帧地访问数据,从上面的数据中计算出一些东西,比如


1.每个框架的质量总和。公式:M=∑mi(i首先,在试图用Spark解决问题之前,尤其是在StackOverflow上发布问题之前,你确实需要学习一两件关于Spark和函数式编程的事情——正如你从评论中看到的那样,当一个问题清楚地表明在p奥斯汀

这就是说,将文本/csv文件转换为
rdd
之前已经回答过SO(例如,请参见),因此请看一看,您只需以通常访问数组中元素的方式访问元素。在下面的示例中,我将每一行映射到一个键值对,以说明如何访问数组中的元素。我理解,您需要进行一些计算,因此您可能需要使用除
映射
之外的其他函数,但希望如此你明白了

val logData: RDD[Array[String]] = sc.textFile("/path/data.txt", 2).map(line => line.split(",") 

logData.map(a => (a.head, (a(1),a(2)))

最后,我强烈建议您升级到Spark的最新版本(撰写本文时为1.5.2)不要使用像1.1.0这样的旧版本。自1.1.0以来,Spark中发生了很多变化,新版本中可以使用像Datatricks中的Spark csv这样的软件包来解析csv文件。

发布您尝试的内容和失败的原因。您实际上是在要求别人为您的问题陈述编写代码。对于这样一个小的文件,您不需要使用se Spark。代码也会更简单。
val logData: RDD[Array[String]] = sc.textFile("/path/data.txt", 2).map(line => line.split(",") 

logData.map(a => (a.head, (a(1),a(2)))