В Высокопроизводительный Spark: передовые методы масштабирования и оптимизации Apache Spark Холдена Карау и Рэйчел Уоррен говорится (стр.259):
Window operations allow you to compute your data over the last K batches of data, which can be very handy for things like moving averages or Kalman filters
Напоминаем, что Kalman - это последовательная обработка, используемая для фильтрации набора данных на основе предыдущих данных. Посмотрев на поведение UDAF, кажется, что оно не адаптировано, поскольку отсутствует понятие упорядочивания (метод слияния объединяет результаты без порядка).
Итак, если UDAF не адаптирован к калману и работе с окнами, как можно вычислить фильтр Калмана внутри окна? Есть ли какой-нибудь пример такого использования окон?
Обратите внимание, что в цитате конкретно говорится о Оконные операции, поэтому ваши предположения, что
the merge method merges the results with no order
не обязательно держать. Если оконная функция применяется с предложением ORDER BY
, т.е.
F(...) OVER (ORDER BY ... [<ROW or RANGE clause>])
или
F(...) OVER (PARTITION BY ... [<ROW or RANGE clause>])
явный порядок определяется контекстом выражения, а слияние вызывается четко определенным образом.
Поскольку агрегатная функция побочного эффекта, используемая с OVER
, является последовательной (глобально в первом случае, по разделам во втором случае), merge
никогда не вызывается.