我对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中寻找一种方法来选择QUIT错误之前的X个记录,并创建这些选定数据块的数据帧,其中每一行可以是QUIT之前的X个代码列表。
感谢您的帮助!
答案 0 :(得分:2)
我会将您的数据框加入到自身。
在左侧,选择所有故障类型为QUIT的事件,在右侧选择所有前面的事件(时间戳小于),按时间排序并使用限制。
然后,您可以按左侧的记录进行分组,并对右侧的记录执行collect_list
。