Ich habe eine 35 GB CSV
Datei. Ich möchte jede Zeile lesen und die Zeile in eine neue CSV schreiben, wenn sie einer Bedingung entspricht.
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");
});
}
}
Dies dauert ca. 7 Minuten. Ist es möglich, diesen Prozess noch weiter zu beschleunigen?
parallel
macht das Entfernen das schneller? Und mischt das nicht die Zeilen herum?
BufferedWriter
selbst mit dem Konstruktor , mit dem Sie die Puffergröße festlegen können. Möglicherweise macht eine größere (oder kleinere) Puffergröße einen Unterschied. Ich würde versuchen, die BufferedWriter
Puffergröße an die Puffergröße des Host-Betriebssystems anzupassen.