У меня есть 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
размер буфера с размером буфера операционной системы хоста.