У меня возникли проблемы с разработкой того, как подойти к моей конкретной проблеме (возможно, из-за слишком большого количества параметров!) В отношении хранения простых данных временных рядов с использованием python ,Простой (но большой) чтение/запись данных временных рядов в python
Все, что я хочу сделать, это сохранить и получить доступ к действительно длинному одномерному списку из 16-битных целых чисел. Я даже не обязательно должен хранить индекс, поскольку он может быть неявно получен из порядка выборок. Но мне нужна быстрая операция добавления.
Проблема заключается в том, что я ожидаю, чтобы иметь о 100GB данных, которая должна быть записана на диск на лету в 100M семплов/сек (я проверил и моя установка SSD может работать 400-500MB/сек пишет), и только с ~ 14 ГБ ОЗУ. Моя первоначальная идея состояла в том, чтобы в основном записать его в отдельные CSV-файлы в кусках строк 100M, но похоже, что это отнимает много места (16-битное целое число может принимать до 5 байтов в виде строки вместо 2). Другие идеи включали использование msgpack/npz/raw двоичных файлов для кусков, и, хотя я более чем счастлив реализовать это самостоятельно, я пытаюсь работать, если есть решение, которое уже существует.
Поскольку я не знаю точно количество образцов, которые мне нужны заранее, я думаю, это означает, что memmap numpy не подходит.
Позже мне также необходимо обрезать данные между двумя индексами для обработки без загрузки всего набора данных в память. Это происходит не во время записи, только после.
Я думаю, что pandas HDFStore - это то, что мне нужно, но я не уверен в некоторых из лучших практик.
В частности,
- Учитывая очень простой формат данных, каковы последствия большого количества узлов (один узел на куске) против одного узла с использованием HDFStore в панд? Если первое лучше, что будет хорошего размера куска?
- Являются ли HDFStores лучшим способом для чтения и записи с высокой скоростью последовательного чтения и записи в pandas? Случайный доступ не имеет значения.
- Является ли моя проблема в области панд? В этой ситуации панды кажутся мне излишними.
Любые другие рекомендации или рекомендации будут оценены. Действительно, мне нужен объект списка в python, но он также поддерживает быстрый доступ к диску и с диска.
Является ли 100 ГБ данных, сгенерированных на лету или уже сохраненных? – sihrc
Почему бы вам не использовать библиотеку HDF5 напрямую и разделить файл позже? Не похоже, что Панда дает вам какую-то пользу. – ganduG
@sihrc: Он генерируется на лету от некоторых аппаратных средств. – jeremy