【问题标题】:Add a column with a rank to an rdd in Spark Scala在 Spark Scala 中将具有排名的列添加到 rdd
【发布时间】:2016-10-19 14:18:51
【问题描述】:

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

val serialRDD = sc.textFile(path)

如果我们打印 RDD 的每一行,我们会得到类似这样的东西(一个 id 和一个字符串):

1929  abc
2384  def
8753  ghi
3893  jkl

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

输出应该是这样的:

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

我如何使用 RDD 完成这项工作?

【问题讨论】:

    标签: scala apache-spark rdd rank


    【解决方案1】:

    您可以使用zipWithIndexmap 来完成它:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 2022-11-02
      • 2021-08-25
      相关资源
      最近更新 更多