Мне нужно разобрать большой файл CSV в режиме реального времени, в то время как он изменен (добавлен) другим процессом. По большому счету я имею в виду ~ 20 ГБ на данный момент и медленно растет. Приложение должно обнаруживать и сообщать о некоторых аномалиях в потоке данных, для чего ему нужно хранить только небольшую информацию о состоянии (O(1)
).Разбор больших текстовых файлов, измененных на лету
Я думал о опросе атрибутов (размера) файла каждые пару секунд, открывая поток только для чтения, стремясь к предыдущей позиции, а затем продолжаю разбирать, где я впервые остановился. Но поскольку это текстовый файл (CSV), я, очевидно, должен отслеживать символы новой строки, когда-либо продолжаю, чтобы я всегда разбирал целую строку.
Если я не ошибаюсь, это не должно быть такой проблемой для реализации, но я хотел знать, есть ли общий способ/библиотека, которая решает некоторые из этих проблем уже?
Примечание: Мне не нужен парсер CSV. Мне нужна информация о библиотеке, которая упрощает чтение строк из файла, который изменяется на лету.
Можно ли остановить обработку csv? Если да, я предлагаю вам передать его в СУБД. – Oybek
@ Ойбек: можете ли вы это немного уточнить? Процесс, который добавляется к файлу, постоянно работает, и мне нужно постоянно анализировать данные по строкам (с задержкой в несколько секунд). – Groo
Предполагаю, что вы не контролируете процесс, испускающий файл? –