Я новичок, чтобы искриться scala, и прошу прощения за глупый вопрос (если есть). Я застрял в проблеме, которую я упростил, как показано ниже:Spark scala - как сделать счет() путем кондиционирования на две строки
Существует кадр данных с тремя столбцами, «машинный идентификатор» - это идентификатор машины. «startTime» - это отметка времени начала задачи. «endTime» - это отметка времени окончания задачи.
Моя цель - подсчитать количество интервалов простоя каждой машины.
Например,
в таблице ниже, первая и вторая строки показывают машину №1, начатую в момент времени 0 и заканчивающуюся в момент времени 3, и начинаются снова в момент времени 4, поэтому временной интервал [3, 4] простаивает. Для 3-го и 4-го рядов машина №1 запускается в момент времени 10 и заканчивается в 20-й момент времени и запускается снова сразу, поэтому нет времени простоя.
machineID, startTime, endTime
1, 0, 3
1, 4, 8
1, 10, 20
1, 20, 31
...
1, 412, 578
...
2, 231, 311
2, 781, 790
...
Рамка данных уже была groupBy ("machineID").
Я использую искру 2.0.1 и scala 2.11.8
Я узнал что-то новое сегодня, функция окна .. +1 – Shankar
Уточненный лаг() сегодня. Объяснение очень понятно и полезно. Спасибо, маас! –