Совокупный просмотр 24 часов с момента последнего события для каждой группы - PullRequest
0 голосов
/ 11 апреля 2019

Я хочу запустить UDAF для groupBy, который будет состоять из всех значений для каждого ключа, оглядываясь назад, на 24 часа. ОТ последнего времени события ключа . Этот 24-часовой параметр будет настраиваемым.

Примечание: Я не могу запустить аналитические функции Spark Window, потому что он работает над кадром для каждой строки, что может привести к серьезным проблемам с производительностью. Это не проблема с движущимся окном !!!

Я пытался использовать Spark Window (отличается от Spark Window Analytic), код выглядит следующим образом. Это немного неправильно для временных окон (см. Вывод)

val windowDF = customerDF.groupBy(col("key"), 
                               window($"session_end_tm", 
                               "24 hours"))
                          .count

Это мой пример кода.

val customer = Seq(
      ("101", 120000.00, 0.00, "2018-01-23 01:23:16"),
      ("101", 410500.00, 500.00, "2018-01-23 01:26:2"),
      ("101", 200.00, 200.00, "2018-01-23 13:07:31"),
      ("101", 410500.00, 0.0, "2018-01-23 18:38:21"),
      ("101", 500.00, 0.0, "2018-01-23 19:32:59")
    )

val customerDF = customer.toDF("key", "val_1", "val_2", "session_end_tm")

val windowDF = customerDF.groupBy(col("key"), window($"session_end_tm", "24 hours")).count

АКТУАЛЬНЫЙ ВЫХОД
Результирующий кадр данных из кода выше

windowDF.show(false)
+---+------------------------------------------+-----+
|key|window                                    |count|
+---+------------------------------------------+-----+
|101|[2018-01-23 19:00:00, 2018-01-24 19:00:00]|1    |
|101|[2018-01-22 19:00:00, 2018-01-23 19:00:00]|4    |
+---+------------------------------------------+-----+

ОЖИДАЕМЫЙ ВЫХОД
Что я ожидаю от кода выше

+---+------------------------------------------+-----+
|key|window                                    |count|
+---+------------------------------------------+-----+
|101|[2018-01-22 20:00:00, 2018-01-23 20:00:00]|5    |
+---+------------------------------------------+-----+

Примечание: Как уже упоминалось в начале, реальным результатом будут несколько агрегированных столбцов, которые пробегают UDAF, а не просто столбец "count".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...