Mam CSV
plik 35 GB . Chcę przeczytać każdą linię i napisać linię do nowego pliku CSV, jeśli pasuje do określonego warunku.
try (BufferedWriter writer = Files.newBufferedWriter(Paths.get("source.csv"))) {
try (BufferedReader br = Files.newBufferedReader(Paths.get("target.csv"))) {
br.lines().parallel()
.filter(line -> StringUtils.isNotBlank(line)) //bit more complex in real world
.forEach(line -> {
writer.write(line + "\n");
});
}
}
To zajmuje około 7 minut. Czy można jeszcze bardziej przyspieszyć ten proces?
parallel
go przyspieszy? I czy to nie przesuwa linii wokół?
BufferedWriter
siebie, używając konstruktora, który pozwala ustawić rozmiar bufora. Być może większy (lub mniejszy) rozmiar bufora zrobi różnicę. Spróbowałbym dopasować BufferedWriter
rozmiar bufora do rozmiaru bufora systemu operacyjnego hosta.