Состояние мигания начальной загрузки

Я работаю над простой агрегацией, которая суммирует итоги событий, происходящих на данном ресурсе (см .: Рассчитывать итоги и периодически выдавать в flink). С некоторой помощью я заставил это работать, но теперь я столкнулся с другой проблемой.

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

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

Если я что-то пропустил, я с радостью предоставлю более подробную информацию.

Спасибо


person Dalibor Novak    schedule 05.04.2018    source источник
comment
может быть, это поможет slideshare.net/Hadoop_Summit/   -  person indraneel    schedule 17.01.2019


Ответы (2)


Я бы порекомендовал использовать для этого состояние flink (https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/stream/state/state.html). У вас может быть объект ValueState, который содержит общее значение для ресурса, который постоянно обновляется, или вы можете сделать ListState для хранения всех значений, которые поступают, и вы выполняете пересчет для всех из них всякий раз, когда приходит новое событие. Очевидно, ListState будет использовать больше памяти, чем одно главное значение, но я не знаю, что вам нужно, так же хорошо, как вы.

person Jicaar    schedule 09.04.2018

У меня аналогичная проблема. Мое текущее решение состоит в том, чтобы иметь два источника - один для исторических данных и один для текущих данных. Затем я бы объединил источники с функцией CoFlatmap. Эта функция должна отслеживать входящие записи, буферизовать их и выводить в правильном порядке. К сожалению, этот подход требует некоторой доработки.

person Tzanko Matev    schedule 02.05.2018