Ho un CSVfile da 35 GB . Voglio leggere ogni riga e scriverla in un nuovo CSV se corrisponde a una condizione.
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");
});
}
}
Questo richiede circa. 7 minuti È possibile accelerare ulteriormente questo processo?
parallelrende più veloce? E questo non mescola le linee intorno?
BufferedWriterte stesso, usando il costruttore che ti consente di impostare la dimensione del buffer. Forse una dimensione del buffer più grande (o più piccola) farà la differenza. Vorrei provare ad abbinare la BufferedWriterdimensione del buffer alla dimensione del buffer del sistema operativo host.