Я строю приложение Flink, примерно моделируемое после приложения Flink по обнаружению мошенничества, где события попадают в мою систему вне порядка, подводятся по некоторым критериям, а затем хранятся в Mapstate . Процесс -функция итерации над ключами MapState, ищет любые события, которые попадают в окно, и объединяя их в функцию агрегации: < /p>
Код: Выделить всё
int windowCount = 0;
for (Long stateEventTime : windowState.keys()) {
if (isStateValueInWindow(stateEventTime, windowStartForEvent, currentEventTime)) {
windowCount++;
}
}
Однако, поскольку мои события приходят плохо вне порядка, я ожидаю, что Windowstate будет содержать до 150 000 записей, и я обеспокоен стоимостью итерации по всем им каждый раз, когда появляется новое событие. Я бы сохранил карту в TreeMap. Если бы я хранил состояние в базе данных, подобной SQL, я также мог бы сохранить индекс временных метров и сделать выбор из Windowstate, где TimeStamp> = Windowbegin и Timestamp
Подробнее здесь:
https://stackoverflow.com/questions/797 ... k-mapstate