Как потоковое вещание Apache Spark создает временные окна - PullRequest
0 голосов
/ 03 июня 2018

Что такое логика в Spark SQL (2.3), которая заставляет окна с недельным интервалом всегда запускаться в четверг?Например: select x,y,z from mytable group by window(datetime_col, "1 week")

Ответы [ 2 ]

0 голосов
/ 21 июня 2018

После некоторого следа и ошибки в Apache Spark 2.3.0 я пришел к такому выводу:

Для окна с фиксированными (большими пальцами): Дата начала - 01.01.1970 (время эпохи).Например, окно (dt, «180 дней»), для события в 12.01.2017 и окно в 180 дней.Если вы посчитаете окна 180 дней, начиная с 01.01.1970, то дата 1/12/2017 будет соответствовать 98-м, то есть [2017-10-21 - 2018-04-19].Также 1 января 1970 года был четверг.Если у вас есть окна с неделями в качестве интервала.оно начнется в четверг.

Для скользящей вдовы: окно создается для самого раннего окна, в котором находится событие. Например, для события ели 1/12/2017 и окна 180-дневного пути с 1 днем,Окна, которые будут создаваться, начнутся с 5 июня 2001 года по 2 декабря 2017 года, и, поскольку окно сдвигается, у вас будет 180 окон (5 июня 2001 года, 6 июня 1997 года -12.03.2017, 06.07.01 - 04.12.2017, ...)

0 голосов
/ 03 июня 2018

window - не лучший выбор для такого приложения.Более разумно использовать next_day:

SELECT ... 
FROM mytable
GROUP BY next_day(datetime_col, 'Thu') - INTERVAL 7 days

То же самое с DataFrame:

df.groupBy(next_day($"datetime_col", "Thu") - expr("INTERVAL 7 days")).agg(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...