如何在 Spark 中连续获得相同的数据帧



我的数据是这样的,状态是0或1,uid是用户ID。

   uid   |timestamp |status
   1     |1         | 0
   2     |3         | 1
   1     |2         | 1
   2     |1         | 0
   1     |3         | 1
   2     |2         | 0
   2     |4         | 0

我想按 uid 进行数据分区,并按时间戳 asc 排序。

   uid   |timestamp |status
   1     |1         | 0
   1     |2         | 1
   1     |3         | 1
   2     |1         | 0
   2     |2         | 0
   2     |3         | 1
   2     |4         | 0

连续获得相同的状态,并让他们做其他事情。对不起,我的英语是...狗屎。辰是这样的:

   uid   |status  |timestamps-asc-order
   1     |(0)     | (1)
   1     |(1,1)   | (2,2)
   2     |(0,0)   | (1,2)
   2     |(1)     | (3)
   2     |(0)     | (4)

我可以使用窗口功能进行分区和排序。但是,如何获得连续相同的状态?

val window = Window.partitionBy("uid").orderBy($"timestamp".asc)

欢迎来到 StackOverflow。

您正在寻找collect_list功能。

你应该能够实现你的要求与

df.withColumn("timestamps-asc-order", collect_list("timestamp").over(Window.partitionBy("uid").orderBy("timestamp"))

相关内容

  • 没有找到相关文章

最新更新