Я делал через проекцию файла в память и поиск нужных строк через дикшинари (мапа по джавовски) по ключевым словам. Но у меня задача была смерджить два файла по определенным файлам + многопоточность
ну вот я конечном итоге распределил задачу на 10 машин по 10 потоков на каждой. помогло то что первая колонка в csv постоянна по наполнению. менялись только 2 и 3. так делал “разницу” просто между файлами - в итоге оставалось то что нужно