множественный расчет в оконной функции - PullRequest
0 голосов
/ 31 мая 2018

В spark я пытаюсь рассчитать три транзакции в одном окне.Поскольку у меня есть другой пример, использующий одни и те же окна много раз, это занимает слишком много времени.Я сократил мой пример, как показано ниже.Можно ли сделать это в одной оконной функции, как показано ниже.Выдает ошибку, как и ожидалось ...

val sonuc = data.withColumn("meanError",
  struct(mean($"errorGeneral"),min($"errorGeneral")).over(
  Window.partitionBy($"id").orderBy($"time".asc).rangeBetween(-240*3600,
  0)))

Спасибо.

1 Ответ

0 голосов
/ 31 мая 2018

В этом нет ничего плохого:

val w = Window.partitionBy($"id").orderBy($"time".asc).rangeBetween(-240*3600, 0)

data.select($"*"
  mean($"errorGeneral").over(w),
  min($"errorGeneral").over(w)
)

Внутренне Spark придется перетасовать и заказывать только один раз.

Если это медленно, то это потому, что оконные функции находятся наверхусамые дорогие операции в Spark, особенно с такими широкими кадрами.

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