У меня есть куча событий в искре (пользователь щелкает/действия/нажимает кнопку), характеризуемых note
колонки:Sessionization с искрой
>>> df.show(20)
+-------+-------------+------------+------+
| user| timestamp| note|action|
+-------+-------------+------------+------+
|2376466|1458580817381|event #1 ...|UPDATE|
|2376466|1458580822034|event #1 ...|UPDATE|
|2376466|1458580822112|event #2 ...|UPDATE|
|2376466|1458580822166|event #2 ...|UPDATE|
|2376466|1458580822216|event #2 ...|UPDATE|
|2376466|1458580822225|event #2 ...|UPDATE|
|2376466|1458580822651|event #1 ...|UPDATE|
|2376466|1458580822660|event #1 ...|UPDATE|
+-------+-------------+------------+------+
Я хотел бы знать, длительность «сеанс» от note
. Например, событие №2 началось с 1458580822112 и закончилось на 1458580822225, поэтому продолжительность будет ..225 - ..112 = 113
мс. Есть ли какие-либо свечи или ярлыки для организации данных в «сеансах» или каким-то другим способом для извлечения такой информации? Или идея состоит в том, чтобы добавлять дополнительную информацию о состоянии в каждую строку и свертывать ее, когда столбец идентификатора сеанса готов ?
ПРИМЕЧАНИЕ.. несколько нот одного и того же типа должны рассматриваться как отдельные сессии
Насколько я понимаю, ваши намерения возможны с помощью оконных функций, но они не являются ни хорошенькими, ни особенно эффективными. Тем не менее я уже опубликовал некоторые ответы на подобные вопросы. В общем, было бы проще реализовать что-то вроде этого w RDD (возможно, с наборами данных), но это довольно широкий вопрос. – zero323
Не возражаете ли вы выкапывать подобный вопрос на поверхность? – Oleksiy
Я буду искать завтра, если не забуду, но это всего лишь три основных шага: 1) определить переключение между «сеансами» (отставание); 2) добавить идентификатор сеанса (суммарная сумма по точкам переключения); 3) некоторые статистические данные – zero323