Состояние карты в Apache Flink

#apache-flink #flink-streaming

Вопрос:

Я хочу хранить около 500 ключей в mapState для каждого ключа в KeyedStream. Я не знаю, как работает mapState.

Когда я получаю доступ к mapState, я должен прочитать все ключи, а затем обновить один из них. Эффективно ли здесь работает mapState?

Ответ №1:

При использовании с HashMapStateBackend , MapState является хэш-картой в памяти (внутри многоверсионной хэш-карты, управляемой параллелизмом). При использовании с EmbeddedRocksDBStateBackend , каждая пара ключ/значение в MapState является отдельной парой ключ/значение в локальном экземпляре RocksDB.

Обратите внимание, что у этого MapState есть keys метод, который возвращает все ключи, и iterator метод для итерации по всем парам ключ/значение. Но независимо от того, какой сервер штата вы выберете, обе эти операции стоят дорого.