我使用 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())