Uso o HDF5 há anos, mas à medida que o tamanho do conjunto de dados aumenta, estou começando a ter os mesmos problemas listados aqui
http://cyrille.rossant.net/moving-away-hdf5/
Você pode me apontar para um formato como HDF5 com - Bom suporte para gravações paralelas - Suporte para acesso em blocos de grandes matrizes
Meu caso de uso típico é uma matriz inteira de 100k x 100k. Gostaria de tê-lo como um arquivo inteiro de uma perspectiva lógica, mas preciso escrevê-lo pedaço por pedaço com trabalhadores paralelos.
Respostas:
O HDF5 é, até certo ponto, um sistema de arquivos por si só. Ao introduzir B-Trees e pela maneira como gerencia os blocos, ele duplica a funcionalidade de um sistema de arquivos. Quando você está executando seu código, provavelmente o está executando em um sistema operacional com um sistema de arquivos comprovado e escalável. Portanto, sugiro que você grave seus dados numéricos em um único arquivo usando o acesso a arquivos brutos ou MPI-IO e grave os metadados (endianess, tamanho, atributos etc.) em um arquivo JSON ou XML separado. Se você tiver vários conjuntos de dados, poderá organizá-los em um diretório ou hierarquia de diretórios. Quando você deseja distribuir o conjunto de dados, basta compactá-lo em um arquivo ZIP.
A única desvantagem é que você deve lidar com o Endianness , o que, no entanto, não é difícil .
Para uma inspiração sobre como isso pode ser feito, consulte Dragly, et. al. "A. Estrutura experimental de diretórios (Exdir): uma alternativa ao HDF5 sem a introdução de um novo formato de arquivo" Front. Neuroinform., 2018, 12 .
fonte