46 votes

Avez-vous déjà utilisé h5py pour effectuer des travaux analytiques sur le Big Data en Python?

Je fais beaucoup de travaux statistiques et d'utiliser Python comme ma langue. Certains des ensembles de données qui je travaille que peut prendre de 20 go de mémoire, ce qui rend d'exploitation à l'aide-mémoire des fonctions de numpy, scipy, et PyIMSL presque impossible. L'analyse statistique de la langue SAS a un gros avantage qu'il peut fonctionner sur des données à partir du disque dur, par opposition à strictement traitement en mémoire. Mais, je veux éviter d'avoir à écrire beaucoup de code dans le SAS (pour diverses raisons) et je suis donc d'essayer de déterminer quelles sont les options que j'ai avec Python (en plus de l'achat du matériel et de la mémoire).

Je me dois de préciser que les approches réduire la carte ne va pas aider dans une grande partie de mon travail parce que j'ai besoin de fonctionner sur complète des ensembles de données (par exemple, le calcul de quantiles ou le montage d'un modèle de régression logistique).

Récemment, j'ai commencé à jouer avec h5py et pense que c'est la meilleure option que j'ai trouvé pour Python permettant d'agir comme SAS et opèrent sur des données à partir du disque (via hdf5 fichiers), tout en étant capable de tirer parti de numpy/scipy/matplotlib, etc. J'aimerais savoir si quelqu'un a de l'expérience à l'aide de Python et h5py dans ce type de configuration et de ce qu'ils ont trouvé. Quelqu'un a été en mesure d'utiliser Python dans les "big data" paramètres jusque-là dominé par la SAS?

EDIT: Acheter plus de matériel/de la mémoire peut certainement aider, mais à partir d'un point de vue informatique, il est difficile pour moi de vendre Python pour une organisation qui a besoin d'analyser d'énormes ensembles de données lors de Python (ou R ou MATLAB, etc) doivent contenir des données de la mémoire. SAS continue à avoir un solide argument de vente ici, parce que, tandis que sur disque analytique peut être plus lent, vous pouvez en toute confiance faire face à d'énormes ensembles de données. Donc, je suis en espérant que Stackoverflow-ers peut m'aider à comprendre comment réduire le risque perçu autour de l'utilisation de Python comme un pilier de la grand-analyse des données de la langue.

49voto

Bernhard Kausler Points 1371

Nous utilisons Python en conjonction avec h5py, numpy/scipy et boost::python pour faire l'analyse des données. Nos typique ensembles de données ont une taille de quelques centaines de Sgb.

HDF5 avantages:

  • les données peuvent être inspectés facilement à l'aide de la h5view application, h5py/ipython et h5* outils en ligne de commande
  • Des api sont disponibles pour les différentes plates-formes et langages
  • la structure de données à l'aide de groupes
  • l'annotation des données à l'aide d'attributs
  • worry-free intégré dans la compression de données
  • io sur des ensembles de données unique est rapide

HDF5 pièges:

  • La Performance se dégrade, si une h5 fichier contient aussi de nombreux jeux de données/groupes (> 1000), car la traversée est très lent. De l'autre côté, io est rapide pour un peu d'ensembles de données volumineux.
  • Avancée des requêtes de données (SQL like) sont maladroit de mettre en œuvre et lent (tenir compte de SQLite dans ce cas)
  • HDF5 est pas thread-safe dans tous les cas: on doit s'assurer que la bibliothèque a été compilé avec les bonnes options
  • changer h5 jeux de données (redimensionner, supprimer, etc.) coups la taille du fichier (dans le meilleur des cas) ou impossible (dans le pire des cas) (l'ensemble h5 fichier doit être copié pour l'aplatir de nouveau)

5voto

Matt Parker Points 7373

C'est un long commentaire, pas de réponse à votre question à propos de h5py. Je n'ai pas utiliser Python pour les stats et ont tendance à traiter avec relativement peu de jeux de données, mais il pourrait être utile à un moment de vérifier le CRAN Vue des Tâches pour le calcul de haute performance en R, en particulier, la "Grande mémoire et de mémoire des données".

Trois raisons:

  • vous pouvez exploiter le code source de l'un de ces paquets pour des idées qui pourraient vous aider en général
  • vous pouvez trouver les noms de package utile dans la recherche de Python équivalents; beaucoup de R les utilisateurs sont en Python, trop
  • dans certaines circonstances, il pourrait s'avérer pratique pour juste un lien pour R pour une analyse à l'aide de l'un des ci-dessus lié paquets et dessinez ensuite les résultats dans Python

Encore une fois, j'insiste sur le fait que c'est toute la façon de sortir de ma ligue, et il est certainement possible que vous le savent déjà tout cela. Mais peut-être que ce sera utile à vous ou à quelqu'un qui travaille sur les mêmes problèmes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X