Procesowanie dużego pliku, wydajność

0

Cześć,

Mam duży plik CSV na dysku (ponad 2GB), chcę w jak najkrótszym czasie:

  • czytam wiersz
  • tnę go, żeby mieć dostęp do każdej wartości
  • wsadzam w jakiś model
  • wrzucam na kolejke

Jak to zrobić, żeby było szybko i dobrze? Myślałem, żeby użyć parallel streamów

public void processFile() {

        try {
            Stream<String> lines = Files.lines(Paths.get(path, fileName));
            lines.parallel().forEach( csvRow -> {
                csvRow.split(";");
                // ... i dalej wsadzanie wartości w obiekt, następnie obiekt wysyłany na kolejke
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Będę wdzięczny za rady

1

@tomek1221:
1)Ja bym zamiast tego try zrobił try-with-resources

try(Stream<String> lines = Files.lines(path)) {
 //code
} catch(IOException e) {
//handle with an exception
}

2). To jakaś aplikacja webowa? To CRON odpalany w nocy? Musisz wiedzieć że parallel stream będzie korzystać ze wspólnej puli watków...

1 użytkowników online, w tym zalogowanych: 0, gości: 1