向Spark Scala中的rdd添加一个列,该列具有秩

向Spark Scala中的rdd添加一个列,该列具有秩,scala,apache-spark,rdd,rank,Scala,Apache Spark,Rdd,Rank,不幸的是,我们仍然必须使用spark 1.0.0,并且需要使用RDD。 我有一个从CSV文件创建的RDD val serialRDD = sc.textFile(path) 如果我们打印RDD的每一行,就会得到如下内容(一个id和一个字符串): 我希望能够添加另一个列作为另一个id,它将是一个类似“SERIAL-”的字符串,其中秩将是1,2,3等,自动递增1 输出应如下所示: 1929 abc SERIAL-1 2384 def SERIAL-2 8753 ghi SERIAL-3

不幸的是,我们仍然必须使用spark 1.0.0,并且需要使用RDD。 我有一个从CSV文件创建的RDD

val serialRDD = sc.textFile(path)
如果我们打印RDD的每一行,就会得到如下内容(一个id和一个字符串):

我希望能够添加另一个列作为另一个id,它将是一个类似“SERIAL-”的字符串,其中秩将是1,2,3等,自动递增1

输出应如下所示:

1929  abc  SERIAL-1
2384  def  SERIAL-2
8753  ghi  SERIAL-3
3893  jkl  SERIAL-4

如何使用RDD完成此操作?

您可以使用
zipWithIndex
map
完成此操作:

serialRDD.zipWithIndex.map{ case (r, i) => (r._1, r._2, s"SERIAL-${i+1}") }

我使用字符串插值来获得
SERIAL-X
字符串。我还增加了索引,因为
zipWithIndex
从索引0开始。

您可以使用
zipWithIndex
map
来完成:

serialRDD.zipWithIndex.map{ case (r, i) => (r._1, r._2, s"SERIAL-${i+1}") }
我使用字符串插值来获得
SERIAL-X
字符串。我还增加了索引,因为
zipWithIndex
从索引0开始