Структурированная потоковая передача Apache Spark для агрегации окон и пользовательского запуска - PullRequest
1 голос
/ 21 июня 2019

Скажем, у меня есть некоторые потоковые данные схемы следующим образом:

uid: string
ts: timestamp

Теперь предположим, что данные были разделены на uid (в каждом разделе данные минимальны, например, меньше 1row / sec).

Я хотел бы поместить данные (в каждом разделе) в окна на основе времени события ts, а затем отсортировать все элементы в каждом окне (также на основе ts), наконец, примените пользовательское преобразование для каждого элемента в окне в следующем порядке.

Q1: Есть ли способ получить агрегированный вид окна, но сохранить каждый элемент, например, материализовать все элементыв окне в список?

Q2: Если Q1 возможен, я хотел бы установить комбинацию водяного знака и триггера, которая срабатывает один раз в конце окна, затем либо периодически запускать, либо запускать каждый раз с опозданиемданные поступают.Возможно ли это?

1 Ответ

0 голосов
/ 24 июня 2019

Прежде чем ответить на вопросы, позвольте мне отметить, что Spark Structured Streaming предлагает KeyValueGroupedDataset.flatMapGroupsWithState (после Dataset.groupByKey) для произвольной агрегации потоковой передачи с отслеживанием состояния (с явной логикой состояния), которая дает вам больше всего возможностей для ручного управления состоянием потоковой передачи.


В1: Есть ли способ получить агрегированный вид окна, но сохранить каждый элемент, например, материализовать все элементы в окне в список?

Это звучит как потоковое соединение, где слева находится входной поток, а справа - агрегированный поток (потоковая агрегация).Это должно быть выполнимо (но без примера кода, так как я все еще не уверен, правильно ли я понял ваш вопрос).

Q2: Если Q1 возможен, я бы хотел установить водяной знак икомбинация триггеров, которая запускается один раз в конце окна, затем либо периодически запускается, либо запускается каждый раз, когда поступают поздние данные.Возможно ли это?

Используйте стандартную функцию window для определения окна и водяного знака для «закрытия» окон в нужное время.Это также выполнимо (но опять не пример, так как я не уверен в достоинствах вопроса).

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