2017-08-07 1 views
4

J'ai plusieurs TB de données (en sous-ensembles) dans des fichiers plats que je veux convertir en HDF5 en utilisant Python Pandas/Pytables/H5py pour accélérer interroger et rechercher. Je prévois de convertir chaque sous-section des données en utilisant quelque chose comme to_hdf et de les stocker dans un HDFStore.HDFStore: Efficacité entre l'ajout de données à une table existante et la réindexation vs la création d'une nouvelle table

Bien que les données stockées n'auront jamais besoin d'être modifiées, il se peut que je doive ajouter des données ultérieurement à une sous-section particulière, puis réindexer (pour les requêtes) la totalité de la pièce. Ma question est la suivante: Est-il plus efficace d'ajouter des données à une table existante (en utilisant store.append) puis de réindexer la nouvelle table, ou devrais-je simplement créer une nouvelle table avec les données que j'ai besoin d'ajouter? Si je fais ce dernier, je pourrais créer un gros lot (plus de 100k) dans le HDSFStore. Cela dégraderait-il le temps d'accès au nœud?

J'ai essayé de regarder d'autres réponses et j'ai aussi créé mon propre magasin avec un tas de nœuds pour voir s'il y avait un effet, mais je n'ai rien trouvé de significatif. Toute aide est appréciée!

+0

Qu'entendez-vous par efficace? Minimiser le temps ou minimiser l'espace, ou une combinaison? –

Répondre

0

Je ne suis pas au courant de problèmes avec avoir beaucoup de nœuds dans votre fichier HDF5. Il n'y a aucune limite sur le nombre de groupes dans un fichier (https://support.hdfgroup.org/HDF5/faq/limits.html).

Vous pouvez également redimensionner des jeux de données, mais la vitesse et les performances de l'espace dépendent de la méthode d'allocation (contiguë par segmentation). Lisez à ce sujet dans le guide de l'utilisateur: https://support.hdfgroup.org/HDF5/doc/UG/HDF5_Users_Guide-Responsive%20HTML5/HDF5_Users_Guide/Datasets/HDF5_Datasets.htm?rhtocid=5.3#TOC_5_5_Allocation_of_Spacebc-15

La mise en œuvre h5py permet la segmentation ainsi que la contiguë par défaut.