Ho un CSV
file 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?
parallel
rende più veloce? E questo non mescola le linee intorno?
BufferedWriter
te 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 BufferedWriter
dimensione del buffer alla dimensione del buffer del sistema operativo host.