Pandas.HDFStore поддерживает параллельную запись MPI в файл HDF5? - PullRequest
0 голосов
/ 04 сентября 2018

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

Вот что я пытался сделать:

import numpy as np
import pandas as pd
from mpi4py import MPI

def main():

    comm = MPI.COMM_WORLD
    rank = comm.rank

    # 4 MPI processes for 4 number attributes.
    numbers = np.arange(1,4)
    # Each MPI process is responsible for its own dataframe. 
    numbergroup = "data/number/%d" % rank

    # Create a random multidim DataFrame on each process. 
    iterables = [['bar', 'baz', 'foo', 'qux'], ['one', 'two']]
    mindex = pd.MultiIndex.from_product(iterables, names=['first', 'second'])
    df = pd.DataFrame(np.random.randn(8, 4), index=mindex)

    pdStore = pd.HDFStore("df.h5")
    # Store the dataframe in a separate sub-group per process.
    pdStore[numbergroup] = df

    pdStore.close()

if __name__=="__main__":
    main()

И выполнить его с:

mpirun -np 4 python pandas-multidim-hdf5-mpi.py

терпит неудачу так:

Проблемы с закрытием групповых данных. Закрытие остается открытым files: df.h5 ... Ошибка в atexit._run_exitfuncs: обратная связь (самая последняя последний вызов): файл "/usr/lib/python3.7/site-packages/tables/file.py", строка 516, в _close_nodes Файл node._g_close () "/usr/lib/python3.7/site-packages/tables/group.py", строка 910, в _g_close self._g_close_group () Файл "tables / hdf5extension.pyx", строка 1090, в tables.hdf5extension.Group._g_close_group tables.exceptions.HDF5ExtError: Ошибка трассировки HDF5

Файл "H5G.c", строка 723, в H5Gclose не группа

Мне известен модуль h5py , но я бы хотел легко хранить и читать многомерные кадры данных. Возможно ли это с интерфейсом панд к HDF5?

...