Pyspark 在Spark中每次出现值之前获取X行

Pyspark 在Spark中每次出现值之前获取X行,pyspark,apache-spark-sql,Pyspark,Apache Spark Sql,我是Spark的新手,我遇到了一些概念上的障碍。我正在寻找关于如何解决这个问题的一般想法: 我有一些这个表格的日志数据- +-------------+--------------------+----+----------+ |serial_number| timestamp|code|fault_type| +-------------+--------------------+----+----------+ | 633878|2017-12-11 01:4

我是Spark的新手,我遇到了一些概念上的障碍。我正在寻找关于如何解决这个问题的一般想法:

我有一些这个表格的日志数据-

+-------------+--------------------+----+----------+
|serial_number|           timestamp|code|fault_type|
+-------------+--------------------+----+----------+
|       633878|2017-12-11 01:45:...|   1|     STATE|
|       633833|2017-12-11 01:45:...|   3|     STATE|
|       633745|2017-12-11 01:45:...| 306|     STATE|
|       633747|2017-12-11 01:46:...|   1|     STATE|
|       634039|2017-12-11 01:46:...|   4|     STATE|
|       633833|2017-12-11 01:46:...|   1|     STATE|
|       637480|2017-12-11 01:46:...|   1|     STATE|
|       634029|2017-12-11 01:46:...|   3|     STATE|
|       634046|2017-12-11 01:46:...|   3|     STATE|
|       634039|2017-12-11 01:46:...|   1|     STATE|
有时,fault_type将等于QUIT,而不是STATE。我正在Spark中寻找一种方法来选择退出故障之前的X个记录数,并创建这些选定数据块的数据帧,其中每一行可以是退出故障之前X个代码数的列表


谢谢你的帮助

我会将您的数据帧连接到自身

在左侧,您选择故障类型为QUIT的所有事件,在右侧,您选择所有之前的事件(时间戳小于),按时间和限制排序。
然后,您可以对左侧的记录进行分组,并对右侧的记录执行
collect\u list

时间戳或序列号方面的“previous”是什么意思?谢谢,这是一个完美的解决方案!