Tengo un CSVarchivo de 35 GB . Quiero leer cada línea y escribir la línea en un nuevo CSV si coincide con una condición.
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");
});
}
}
Esto toma aprox. 7 minutos ¿Es posible acelerar ese proceso aún más?
parallelhace más rápido? ¿Y eso no mezcla las líneas?
BufferedWriterusted mismo, utilizando el constructor que le permite establecer el tamaño del búfer. Tal vez un tamaño de búfer más grande (o más pequeño) hará la diferencia. Intentaría hacer coincidir el BufferedWritertamaño del búfer con el tamaño del búfer del sistema operativo del host.