Я пытаюсь обработать файл CSV с ~ 73 миллиардами строк,
Я храню обработанные строки в коллекции python collections.defaultdict, имеющей строку как ключ и кортежи как значение, однако для хранения этой структуры данных в словаре выполняется ~ 100 секунд для хранения 50K строк.Как обрабатывать огромный файл CSV в python?
Я обрабатываю CSV-файл в кусках 50K строк, чтобы убедиться, что система не выходит из памяти или во избежание операций по обмену ввода-вывода на диске.
Позже я загружаю обработанные CSV-файлы в таблицу и делаю FULL OUTER JOIN для получения комбинированного результата.
Пример ROW из CSV ID, значение: Структура
"10203","http://google.com/goo.gl?key='universe'&value='somedata'"
данных:
dt = {'goog': [(10203, 1), ...}
В основном я пытаюсь реализовать алгоритм для полной функции поиска текста - для этого мне нужно поддерживать позиции значения в частях из 4 символов с ассоциированным ID.
Возможный дубликат [Параллельная обработка большого .csv-файла в Python] (http://stackoverflow.com/questions/8424771/parallel-processing-of-a-large-csv-file-in-python) – hjpotter92
Когда вы обрабатываете много строк, вы явно должны обрабатывать «на лету», так как вы не можете хранить это много данных в памяти на большинстве машин (73 миллиарда строк =, вероятно, более 1 ТБ памяти?). Не зная больше о структуре данных, будет сложно дать какие-либо советы; но почти наверняка структура dict не является самым эффективным способом. Каковы данные, и как вы их агрегируете? – Floris
Что случилось с тем, что вы делаете? почему вы думаете, что 100 секунд для 50K строк медленнее? Также вы можете отправить одну строку из файла CSV для нашего понимания? –