Python est-il adapté au Big Data

14

J'ai lu dans cet article que le langage R est adapté au Big Data que constituent les Big Data5TB , et bien qu'il fournisse un bon travail en fournissant des informations sur la faisabilité de travailler avec ce type de données, Ril fournit très peu d'informations sur Python. Je me demandais si je pouvais aussi Pythontravailler avec autant de données.

ragingSloth
la source

Réponses:

18

Pour clarifier, je pense que les références de questions originales par OP ne sont probablement pas les meilleures pour un format de type SO, mais je vais certainement représenter pythondans ce cas particulier.

Permettez-moi de commencer en disant que quelle que soit la taille de vos données, cela pythonne devrait pas être votre facteur limitant. En fait, il y a juste quelques problèmes principaux que vous allez rencontrer pour traiter de grands ensembles de données:

  • Lecture des données dans la mémoire - C'est de loin le problème le plus courant rencontré dans le monde des mégadonnées. Fondamentalement, vous ne pouvez pas lire plus de données que vous n'en avez de mémoire (RAM). La meilleure façon de résoudre ce problème consiste à effectuer des opérations atomiques sur vos données au lieu d'essayer de tout lire en même temps.
  • Stockage de données - Ce n'est en fait qu'une autre forme du problème précédent, au moment de vous renseigner 1TB, vous devez commencer à chercher ailleurs pour le stockage. AWS S3 est la ressource la plus courante et pythonpossède la fantastique botobibliothèque pour faciliter la gestion de grandes quantités de données.
  • Latence réseau - Le déplacement des données entre différents services va être votre goulot d'étranglement. Vous ne pouvez pas faire grand-chose pour résoudre ce problème, à part essayer de choisir des ressources colocalisées et de vous brancher au mur.
indico
la source
13

Il y a quelques choses que vous devez comprendre lorsque vous traitez avec le Big Data -

Qu'est-ce que le Big data?

Vous connaissez peut-être les fameux V des Big data - Volume, Velocity, Variety ... Donc, Python peut ne pas convenir à tous. Et cela va de pair avec tous les outils de science des données disponibles. Vous devez savoir quel outil est bon dans quel but.

Si vous traitez un grand volume de données:

  • Pig / Hive / Shark - Nettoyage des données et travail ETL
  • Hadoop / Spark - Calcul parallèle distribué
  • Mahout / ML-Lib - Apprentissage automatique

Maintenant, vous pouvez utiliser R / Python à des étapes intermédiaires, mais vous vous rendrez compte qu'ils deviennent un goulot d'étranglement dans l'ensemble de votre processus.

S'il s'agit de la vitesse des données:

  • Kafka / Storm - Système à haut débit

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

Quelle sorte d'analyse souhaitez-vous faire?

Si votre modèle exige que toutes les données soient d'abord mises en mémoire, votre modèle ne devrait pas être complexe car si les données intermédiaires sont volumineuses, le code se cassera. Et si vous pensez à l'écrire sur le disque, vous serez confronté à un délai supplémentaire car la lecture / écriture sur le disque est lente par rapport à la RAM.

Conclusion

Vous pouvez certainement utiliser Python dans l'espace Big Data (certainement, car les gens essaient avec R, pourquoi pas Python) mais connaissez d'abord vos données et vos besoins commerciaux. Il peut y avoir de meilleurs outils disponibles pour les mêmes et rappelez-vous toujours:

Vos outils ne devraient pas déterminer comment vous répondez aux questions. Vos questions devraient déterminer les outils que vous utilisez.

Ankit
la source
8

Python dispose de très bons outils pour travailler avec les mégadonnées:

engourdi

Les tableaux mappés en mémoire de Numpy vous permettent d'accéder à un fichier enregistré sur le disque comme s'il s'agissait d'un tableau. Seules les parties de la baie avec lesquelles vous travaillez activement doivent être chargées en mémoire. Il peut être utilisé à peu près comme un tableau ordinaire.

h5py et pytables

Ces deux bibliothèques permettent d'accéder 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 peuvent être effectuées sans les charger dans une structure de données python. Des fichiers massifs et hautement structurés sont possibles, bien plus gros que 5 To. Il permet également une compression transparente et sans perte.

bases de données

Il existe différents types de bases de données qui vous permettent de stocker des ensembles de données volumineux et de charger uniquement 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 python.

pandas

Cela permet un accès de plus haut niveau à divers types de données, y compris les données HDF5, les fichiers csv, les bases de données et même les sites Web. Pour les mégadonnées, il fournit des enveloppes autour de l'accès aux fichiers HDF5 qui facilitent l'analyse sur les ensembles de mégadonnées.

mpi4py

Il s'agit d'un outil pour exécuter votre code python de manière répartie sur plusieurs processeurs ou même plusieurs ordinateurs. Cela vous permet de travailler simultanément sur des parties de vos données.

dask

Il fournit une version du tableau numpy normal qui prend en charge de nombreuses opérations numpy normales de manière multicœur pouvant fonctionner sur des données trop volumineuses pour tenir en mémoire.

flamber

Un outil spécialement conçu pour le big data. Il s'agit essentiellement d'un wrapper autour des bibliothèques ci-dessus, fournissant des interfaces cohérentes à une variété de méthodes différentes de stockage de grandes quantités de données (telles que HDF5 ou des bases de données) et des outils pour faciliter la manipulation, les opérations mathématiques et l'analyse des données qui est trop grand pour tenir dans la mémoire.

Le chat noir
la source
4

Absolument. Lorsque vous travaillez avec des données à cette échelle, il est courant d'utiliser un cadre de Big Data, auquel cas le python ou le langage que vous utilisez n'est qu'une interface. Voir par exemple le Guide de programmation Python de Spark . De quel type de données disposez-vous et que voulez-vous en faire?

Emre
la source
3

Pour gérer une telle quantité de données, le langage de programmation n'est pas la principale préoccupation, mais le cadre de programmation l'est. Les cadres tels que MapReduce ou Spark ont ​​des liaisons avec de nombreux langages, y compris Python. Ces frameworks ont certainement de nombreux packages prêts à l'emploi pour les tâches d'analyse de données. Mais au final, tout dépend de votre exigence, c'est-à-dire quelle est votre tâche? Les gens ont différentes définitions des tâches d'analyse de données, certaines d'entre elles peuvent être facilement résolues avec des bases de données relationnelles. Dans ce cas, SQL est bien meilleur que toutes les autres alternatives.

lgylym
la source
2

Je crois que le langage lui-même n'a pas grand-chose à voir avec les capacités de performance, lorsqu'il s'agit de données volumineuses. Ce qui compte c'est:

  • Quelle est la taille réelle des données
  • Quel traitement allez-vous y effectuer
  • Quel matériel allez-vous utiliser
  • Quelles sont les bibliothèques spécifiques que vous prévoyez d'utiliser

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

Mateva
la source
2

J'ai utilisé Anaconda Python 3.4 et Pandas pour rechercher une base de données de 10 millions de lignes afin de faire correspondre 20 000 informations d'identification de connexion. Prend environ une minute. Les internes des pandas utilisent beaucoup la mémoire. Cela dit, les données vraiment volumineuses nécessitent une architecture de traitement adaptée au problème. Les pandas ne sont que la colle (logique) dans cette équation, et d'autres outils peuvent également le faire. R, Scala, Haskell, SAS, etc. peuvent reproduire une partie de la logique - peut-être juste assez pour répondre aux questions plus rapidement. Mais python est un bon (meilleur?) Outil polyvalent. Vous pouvez exécuter du code R en python, ainsi que dans la plupart des autres langages. Bien qu'interprétatifs, il existe des techniques et des outils hautes performances tels que pypy qui peuvent faire fonctionner python presque aussi rapidement que des outils de référence avec seulement un peu plus d'efforts. Et python possède de nombreuses bibliothèques qui font à peu près tout - voir la liste ci-dessus.

Si vous demandez si vous devez apprendre et utiliser python, ma réponse est oui. Les articles indiquent que python est utilisé plus que R chez les personnes qui utilisent les deux. Mais peu de problèmes de science des données sont résolus par un seul outil. Il peut devenir votre outil de référence, mais ce n'est que cela - un outil. Et tout comme aucune personne sensée ne construit une maison avec juste un marteau, aucun Data Scientist sain d'esprit n'utilise qu'un seul outil.

Harvey
la source
0

C'est drôle de voir comment les gens mélangent le Big Data avec la science des données et la Business Intelligence.

Premièrement, le big data signifie "beaucoup de données", tellement d'informations qu'elles ne rentrent pas dans une base de données conventionnelle. Cependant, les mégadonnées ne sont parfois même pas des informations de «valeur» appropriées, mais des documents, des images, etc.

Donc, pour traiter les mégadonnées, NOUS AVONS BESOIN DE VITESSE. Python est hors de la ligue, donc R. Cependant, si la tâche est aussi simple que de prendre un CSV et de l'insérer dans une base de données, alors c'est ETL, nous n'avons pas besoin de programmation pour le faire.

Et lorsque les informations sont réduites, nous pouvons appliquer du python, r ou tout ce que vous voulez. Même Excel. Cependant, à ce stade, le Big Data n'est plus un big data mais des données conventionnelles.

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

magallanes
la source