我使用 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|
+---------+--------+
我希望每一行都附加索引,范围在介于 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|
+---------+--------+---+
谢谢。
最佳答案
我知道这个问题可能是很久以前的问题了,但你可以按如下方式做:
from pyspark.sql.window import Window
w = Window.orderBy("myColumn")
withIndexDF = originalDF.withColumn("index", row_number().over(w))
- myColumn:数据框中的任何特定列。
- originalDF:没有索引列的原始DataFrame。
关于java - 将索引列添加到现有 Spark 的 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38875599/