Я работаю над приложением Kafka-Streams, которое обрабатывает пары ключ-значение в хранилище состояний. В настоящее время я просматриваю все хранилище, используя store.all() и стандартный цикл while. Однако этот подход становится медленным при работе с большими наборами данных (около 10 миллионов пар ключ-значение).
Доступ к хранилищу состояний можно получить следующим образом:
Код: Выделить всё
ReadOnlyKeyValueStore store = streams.store(StoreQueryParameters.fromNameAndType("myStore", QueryableStoreTypes.keyValueStore()));
KeyValueIterator iterator = store.all();
while(iterator.hasNext()){
//Process iterator.next()
}
iterator.close()
Я пытался обработать 10 миллионов пар ключ-значение, и это заняло около 30 секунд. Можно ли обойти последовательный характер итератора и обрабатывать значения ключей параллельно из хранилища?
Подробнее здесь:
https://stackoverflow.com/questions/785 ... ithreading