У меня есть CSVфайл 35 ГБ . Я хочу прочитать каждую строку и записать строку в новый CSV, если он соответствует условию.
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");
});
}
}
Это занимает ок. 7 минут Можно ли еще быстрее ускорить этот процесс?
parallelделает это быстрее? И разве это не перемешивает линии?
BufferedWriterсебя, используя конструктор, который позволяет вам установить размер буфера. Возможно, больший (или меньший) размер буфера будет иметь значение. Я хотел бы попытаться сопоставить BufferedWriterразмер буфера с размером буфера операционной системы хоста.