Question

Je lis dans ce message est la langue de R approprié pour Big Data que les grandes données constitue 5TB, et alors qu'il fait un bon travail de fournir des informations sur la faisabilité de travailler avec ce type de données en R il fournit très peu d'informations sur Python. Je me demandais si Python peut travailler avec autant de données aussi bien.

Était-ce utile?

La solution

Pour clarifier les choses, je me sens comme les références question d'origine par OP est soit probablement pas le mieux pour un format de type SO, mais je représentera certainement python dans ce cas particulier.

Permettez-moi de commencer en disant que quelle que soit la taille de votre données, python ne doit pas être votre facteur limitant. En fait, il y a juste des questions couple principales que vous allez courir dans le traitement des grands ensembles de données:

  • La lecture des données dans la mémoire - Ceci est de loin le plus problème commun auquel sont confrontés dans le monde des grandes données. En fait, vous ne pouvez pas lire plus de données que vous avez la mémoire (RAM) pour. La meilleure façon de résoudre ce problème est en faisant des opérations atomiques sur vos données au lieu d'essayer de lire tout à la fois.
  • Stockage de données - Ceci est en fait juste une autre forme de la question plus tôt, le temps de se lever à environ 1TB, vous commencez à avoir à chercher ailleurs pour le stockage. AWS S3 est la plus commune des ressources et python a la bibliothèque de boto fantastique pour faciliter en tête avec de gros morceaux de données.
  • latence réseau - Déplacement des données entre les différents services autour va être votre goulot d'étranglement. Il n'y a pas une énorme quantité que vous pouvez faire pour résoudre ce problème, autre que d'essayer de récupérer les ressources colocalisés et de le brancher dans le mur.

Autres conseils

Il y a quelques choses que vous devez comprendre quand traiter les données Big -

Qu'est-ce que les données Big?

Vous savez peut-être célèbre V des données de Big - Volume, Vitesse, Variété ... Donc, Python ne peut pas convenir à tous. Et il va de pair avec tous les outils scientifiques de données disponibles. Vous devez savoir quel outil est bon dans quel but.

Si vous traitez avec un grand volume de données:

  • Pig / Hive / Shark - nettoyage des données et le travail ETL
  • Hadoop / Spark - calcul parallèle réparti
  • Mahout / ML-Lib - Apprentissage

Maintenant, vous pouvez utiliser R / Python dans les étapes intermédiaires, mais vous vous rendrez compte qu'ils deviennent goulot d'étranglement dans votre ensemble du processus.

Si vous traitez avec la vitesse des données:

  • Kafka / Storm - haut débit système

Les gens essaient de R / Python ici mais encore une fois cela dépend de type de parallélisme que vous voulez et la complexité de votre modèle.

Quelle sorte d'analyse que vous voulez faire?

Si votre modèle exige l'ensemble des données à d'abord mis en mémoire alors votre modèle ne doit pas être complexe, car si les données intermédiaires est grand le code sera alors briser. Et si vous pensez à écrire dans le disque, vous devrez faire face à un retard supplémentaire car le disque en lecture / écriture est lente par rapport à la RAM.

Conclusion

Vous pouvez certainement utiliser Python dans l'espace de données Big (Sans aucun doute, puisque les gens essaient avec R, pourquoi ne pas Python) mais connaître vos données et les besoins des entreprises en premier. Il peut y avoir de meilleurs outils disponibles pour même et rappelez-vous toujours:

  

Vos outils ne doivent pas déterminer comment vous répondre à des questions. Vos questions devraient déterminer les outils que vous utilisez.

Python a des très bons outils pour travailler avec les grandes données:

numpy

tableaux mappés Memmory-de NumPy vous permettent d'accéder d'un fichier enregistré sur le disque comme si elle était un tableau. Seules les parties du tableau que vous travaillez activement avec le besoin d'être chargés en mémoire. Il peut être utilisé à peu près le même que celui d'un tableau ordinaire.

h5py et pytables

Ces deux bibliothèques offrent un accès aux fichiers HDF5. Ces fichiers permettent d'accéder à une partie seulement des données. De plus, grâce aux bibliothèques sous-jacentes utilisées pour accéder aux données, de nombreuses opérations mathématiques et autres manipulations des données peut se faire sans le charger dans une structure de données de python. Massive, fichiers très structurés sont possibles, beaucoup plus grand que 5 To. Elle permet également transparente, la compression sans perte.

bases de données

Il existe différents types de bases de données qui vous permettent de stocker de grands ensembles de données et charger seulement les pièces dont vous avez besoin. De nombreuses bases de données vous permettent de faire des manipulations sans charger les données dans une structure de données de python du tout.

pandas géants

Cela permet d'accéder au niveau supérieur à divers types de données, y compris les données de HDF5, csv, bases de données, même des sites Web. Pour les grandes données, il fournit des wrappers autour de l'accès aux fichiers HDF5 qui le rend plus facile de faire une analyse sur les grands ensembles de données.

mpi4py

Ceci est un outil pour gérer votre code python d'une manière répartie sur plusieurs processeurs ou même plusieurs ordinateurs. Cela vous permet de travailler sur des parties de vos données simultanément.

dask

Il fournit une version du tableau de numpy normal que de nombreux supports des opérations de numpy normales d'une manière multicœur qui peuvent travailler sur des données trop volumineux pour tenir dans la mémoire.

blaze

Un outil spécialement conçu pour les gros volumes de données. Il est essentiellement un wrapper autour des bibliothèques ci-dessus, fournissant des interfaces cohérentes à une variété de différentes méthodes de stockage de grandes quantités de données (telles que HDF5 ou bases de données) et les outils pour le faire manipuler facilement, faire des opérations mathématiques sur, et analyser les données est trop grand pour tenir dans la mémoire.

Tout à fait. Lorsque vous travaillez avec des données à l'échelle commune de à utiliser un grand cadre de données, dans lequel python cas ou quelle que soit la langue que vous utilisez est simplement une interface. Voir par exemple Guide de programmation Python de Spark. Quel type de données avez-vous et que voulez-vous faire?

Pour gérer une telle quantité de données, langage de programmation ne sont pas la principale préoccupation, mais le cadre de la programmation est. Cadres tels que MapReduce ou Spark ont ??des liaisons à de nombreuses langues, y compris Python. Ces cadres ont certainement beaucoup de paquets prêts à l'emploi pour les tâches d'analyse des données. Mais à la fin tout est à votre exigence, à savoir, quelle est votre tâche? Les gens ont différentes définitions de tâches d'analyse des données, certains d'entre eux peuvent être facilement résolus avec les bases de données relationnelles. Dans ce cas, SQL est beaucoup mieux que toutes les autres solutions.

Je crois que la langue elle-même n'a rien à voir avec des capacités de performance, en matière de grandes quantités de données. Ce qui importe est:

  • Quelle est la taille des données réellement
  • Quel traitement vous allez effectuer sur elle
  • Quel est le matériel que vous allez utiliser
  • Quelles sont les bibliothèques spécifiques que vous envisagez d'utiliser

Quoi qu'il en soit, Python est bien adopté dans les communautés scientifiques de données.

Je l'ai utilisé Anaconda Python 3.4 et Pandas pour rechercher 10M base de données de ligne pour correspondre 20K des identifiants de connexion. Prend environ une minute. Les Pandas font grand usage internes de la mémoire. Cela dit, vraiment gros volumes de données nécessite une architecture de traitement adaptée au problème. Pandas est juste la colle (logique) dans cette équation, et d'autres outils peut le faire aussi bien. R, Scala, Haskell, SAS, etc. peut reproduire une partie de la logique - peut-être juste assez pour répondre à des questions plus rapidement. Mais python fait un bon (le meilleur?) Outil polyvalent. Vous pouvez exécuter le code de R en python, ainsi que la plupart des autres langues. Bien que d'interprétation, il existe des techniques de haute performance et des outils tels que pypy qui peuvent faire courir python presque aussi vite que les outils de référence avec seulement un peu plus d'efforts. Et python a de nombreuses bibliothèques qui font à peu près tout - voir liste ci-dessus

.

Si vous demandez si vous devriez apprendre et python utilisation, ma réponse est oui articles indiquent que python est utilisé plus de R parmi les personnes qui utilisent à la fois. Mais peu de problèmes scientifiques de données sont résolues par un seul outil. Il peut devenir votre go-to outil, mais sa seule qui - un outil. Et comme aucune personne saine d'esprit construit une maison avec juste un marteau, pas sain d'esprit scientifique des données utilise un seul outil.

Il est drôle comment les gens mélangent les données importantes avec la science des données et de business intelligence.

Tout d'abord, les grands moyens de données « un grand nombre de données », tellement d'informations qu'il ne rentre pas dans une base de données classique. Cependant, parfois grandes données ne sont pas encore d'informations « valeur » correcte mais les documents, les images et ainsi de suite.

Alors, pour traiter les données importantes, NOUS AVONS BESOIN DE VITESSE. Python est hors de la ligue, alors R. Cependant, si la tâche est aussi facile que de prendre un fichier CSV et l'insérer dans une base de données, alors il est ETL, on n'a pas besoin de programmation pour le faire.

Et lorsque l'information est réduite, alors nous pourrions appliquer python, r ou tout ce que vous voulez. Même Excel. Cependant, dans ce stade, Big Data est pas grande, mais plus de données classiques.

à mon humble avis, Java est plus approprié pour Big Data (pour toute la chaîne), mais les gens prennent Python par défaut pour une raison peu pratique.

Licencié sous: CC-BY-SA avec attribution
scroll top