将索引列添加到现有 Spark 的 DataFrame

Ser*_*kov 5 java apache-spark

我使用 Java 操作 Spark 1.5。我需要将 ID/索引列附加到现有的 DataFrame,例如:

+---------+--------+
|  surname|    name|
+---------+--------+
|    Green|    Jake|
| Anderson|  Thomas|
| Corleone| Michael|
|    Marsh|   Randy|
|  Montana|    Tony|
|    Green|   Julia|
|Brenneman|    Eady|
|   Durden|   Tyler|
| Corleone|    Vito|
|   Madiro|     Mat|
+---------+--------+
Run Code Online (Sandbox Code Playgroud)

我希望每一行都附加索引,索引范围在1 和表记录数量之间。索引顺序并不重要,任何行都必须只包含唯一的 ID/索引。可以通过转换为 RDD 并附加索引行并转换为具有修改的 StructType 的 DataFrame 来完成,但是,如果我理解正确的话,此操作会消耗大量资源用于转换等,并且必须有另一种方法。结果必须是这样的:

+---------+--------+---+
|  surname|    name| id|
+---------+--------+---+
|    Green|    Jake|  3|
| Anderson|  Thomas|  5|
| Corleone| Michael|  2|
|    Marsh|   Randy| 10|
|  Montana|    Tony|  7|
|    Green|   Julia|  1|
|Brenneman|    Eady|  2|
|   Durden|   Tyler|  9|
| Corleone|    Vito|  4|
|   Madiro|     Mat|  6|
+---------+--------+---+
Run Code Online (Sandbox Code Playgroud)

谢谢。

小智 -2

您可以使用 withColumn 函数。用法应该类似于 Val myDF =existingDF.withColumn("index",express(random(1,existingDF.count())