Muszę parsować duży plik CSV w czasie rzeczywistym, podczas gdy jest on zmodyfikowany (dołączony) przez inny proces. Przez duże mam na myśli ~ 20 GB w tym momencie i powoli rośnie. Aplikacja musi jedynie wykrywać i zgłaszać pewne anomalie w strumieniu danych, dla których potrzebuje jedynie przechowywać niewielkie informacje o stanie (O(1)
).Parsowanie dużych plików tekstowych, zmodyfikowanych w locie
Zastanawiam się nad odpytywaniem atrybutów pliku (rozmiaru) co kilka sekund, otwieraniem strumienia tylko do odczytu, szukaniem poprzedniej pozycji, a następnie kontynuowaniem analizowania miejsca, w którym po raz pierwszy stanąłem. Ale ponieważ jest to plik tekstowy (CSV), oczywiście muszę nadal śledzić znaki nowej linii, aby kontynuować, aby upewnić się, że zawsze parsuję całą linię.
Jeśli się nie mylę, nie powinno to stanowić problemu, ale chciałem się dowiedzieć, czy istnieje wspólna metoda/biblioteka, która rozwiązuje już niektóre z tych problemów?
Uwaga: Nie potrzebuję analizatora składni CSV. Potrzebuję informacji o bibliotece, która upraszcza czytanie linii z pliku, który jest modyfikowany w locie.
Czy można zatrzymać przetwarzanie plików CSV? Jeśli tak, proponuję przeniesienie go do RDBMS. – Oybek
@Oybek: możesz to trochę wyjaśnić? Proces, który jest dołączany do pliku, ciągle działa i muszę analizować linię danych po linii (z kilkuminutowym opóźnieniem). – Groo
Zakładam, że nie masz kontroli nad procesem wysyłania pliku? –