如何枚举数据帧的行? Spark Scala

时间:2016-11-02 15:58:44

标签: scala apache-spark dataframe

我有一个像这样的数据框(renderDF):

+------+---+-------+
|   uid|sid|renders|
+------+---+-------+
| david|  0|      0|
|rachel|  1|      0|
|rachel|  3|      0|
|rachel|  2|      0|
|   pep|  2|      0|
|   pep|  0|      1|
|   pep|  1|      1|
|rachel|  0|      1|
|  rick|  1|      1|
|  ross|  0|      3|
|  rick|  0|      3|
+------+---+-------+

我想使用窗口函数来实现这个结果

+------+---+-------+-----------+
|   uid|sid|renders|row_number |    
+------+---+-------+-----------+
| david|  0|      0|        1  |
|rachel|  1|      0|        2  |
|rachel|  3|      0|        3  |
|rachel|  2|      0|        4  |
|   pep|  2|      0|        5  |
|   pep|  0|      1|        6  |
|   pep|  1|      1|        7  |
|rachel|  0|      1|        8  |
|  rick|  1|      1|        9  |
|  ross|  0|      3|       10  |
|  rick|  0|      3|       11  |
+------+---+-------+-----------+

我试试:

val windowRender = Window.partitionBy('sid).orderBy('Renders)
renderDF.withColumn("row_number", row_number() over windowRender)

但它不能满足我的需要。 分区是我的问题吗?

1 个答案:

答案 0 :(得分:-1)

试试这个:

val dfWithRownumber = renderDF.withColumn("row_number", row_number.over(Window.partitionBy(lit(1)).orderBy("renders")))