инкрементная запись в hdf5 с помощью h5py

У меня вопрос о том, как лучше писать в hdf5 файлы с помощью python / h5py.

У меня есть данные как:

-----------------------------------------
| timepoint | voltage1 | voltage2 | ...
-----------------------------------------
| 178       | 10       | 12       | ...
-----------------------------------------
| 179       | 12       | 11       | ...
-----------------------------------------
| 185       | 9        | 12       | ...
-----------------------------------------
| 187       | 15       | 12       | ...
                    ...

около 10 ^ 4 столбцов и около 10 ^ 7 строк. (Это около 10 ^ 11 (100 миллиардов) элементов, или ~ 100 ГБ с 1 байтами).

С этими данными типичное использование - это, в основном, однократная запись, многократное чтение, и типичным случаем чтения будет захват столбца 1 и другого столбца (скажем, 254), загрузка обоих столбцов в память и выполнение некоторой необычной статистики.

Я думаю, что хорошая структура hdf5 должна состоять в том, чтобы каждый столбец в таблице выше был группой hdf5, что привело бы к 10 ^ 4 группам. Таким образом, нам не нужно будет читать все данные в память, да? Структура hdf5 еще не определена, поэтому она может быть чем угодно.

Теперь вопрос: я получаю данные ~ 10 ^ 4 строки за раз (и не точно одинаковое количество строк каждый раз), и мне нужно записать их постепенно в файл hdf5. Как мне написать этот файл?

Я рассматриваю python и h5py, но могу порекомендовать другой инструмент. Пробивает путь, например,

dset = f.create_dataset("voltage284", (100000,), maxshape=(None,), dtype='i8', chunks=(10000,))

и затем, когда прибудет другой блок из 10 ^ 4 строк, замените набор данных?

Или лучше просто хранить каждый блок из 10 ^ 4 строк в виде отдельного набора данных? Или мне действительно нужно знать окончательное количество строк? (Это будет сложно получить, но, возможно, возможно).

Я могу взять залог за hdf5, если он тоже не подходит для этой работы, хотя я думаю, что, как только неловкие записи будут сделаны, это будет замечательно.

Ответы на вопрос(2)

Ваш ответ на вопрос