#apache-flink #flink-streaming
Вопрос:
Я хочу хранить около 500 ключей в mapState для каждого ключа в KeyedStream. Я не знаю, как работает mapState.
Когда я получаю доступ к mapState, я должен прочитать все ключи, а затем обновить один из них. Эффективно ли здесь работает mapState?
Ответ №1:
При использовании с HashMapStateBackend
, MapState
является хэш-картой в памяти (внутри многоверсионной хэш-карты, управляемой параллелизмом). При использовании с EmbeddedRocksDBStateBackend
, каждая пара ключ/значение в MapState
является отдельной парой ключ/значение в локальном экземпляре RocksDB.
Обратите внимание, что у этого MapState
есть keys
метод, который возвращает все ключи, и iterator
метод для итерации по всем парам ключ/значение. Но независимо от того, какой сервер штата вы выберете, обе эти операции стоят дорого.