加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:16:05 所属栏目:Java 来源:网络整理
导读:我使用 Java运行Spark 1.5.我需要将ID / Index列附加到现有的DataFrame,例如: +---------+--------+| surname| name|+---------+--------+| Green| Jake|| Anderson| Thomas|| Corleone| Michael|| Marsh| Randy|| Montana| Tony|| Green| Julia||Brenneman
我使用 Java运行Spark 1.5.我需要将ID / Index列附加到现有的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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读