J'ai un CSV
fichier de 35 Go . Je veux lire chaque ligne et écrire la ligne dans un nouveau CSV s'il correspond à une condition.
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");
});
}
}
Cela prend env. 7 minutes. Est-il possible d'accélérer encore plus ce processus?
parallel
rend plus rapide? Et cela ne change-t-il pas les lignes?
BufferedWriter
vous - même, en utilisant le constructeur qui vous permet de définir la taille du tampon. Peut-être qu'une taille de tampon plus grande (ou plus petite) fera une différence. J'essaierais de faire correspondre la BufferedWriter
taille de la mémoire tampon à la taille de la mémoire tampon du système d'exploitation hôte.