Le langage R convient-il au Big Data?

48

R possède de nombreuses bibliothèques destinées à l’analyse de données (par exemple, JAGS, BUGS, ARULES, etc.), et est mentionné dans des manuels populaires tels que: J.Krusche, Doing Bayesian Data Analysis; B.Lantz, "Machine Learning avec R".

J'ai observé une directive de 5 To pour qu'un jeu de données soit considéré comme du Big Data.

Ma question est la suivante: R convient-il à la quantité de données généralement rencontrée dans les problèmes de Big Data? Existe-t-il des stratégies à utiliser lors de l’utilisation de R avec cette taille de jeu de données?

Akellyirl
la source
4
En plus des réponses ci-dessous, il convient de se rappeler que la plupart des choses dont vous avez besoin de R concernant le Big Data peuvent être réalisées avec des ensembles de données récapitulatifs très petits comparés aux journaux bruts. L'échantillonnage à partir du journal brut fournit également un moyen transparent d'utiliser R pour l'analyse sans avoir à se soucier de l'analyse des lignes et des lignes d'un journal brut. Par exemple, pour une tâche de modélisation courante au travail, j'utilise régulièrement map reduction pour résumer 32 gbs de journaux bruts en 28 Mo de données utilisateur pour la modélisation.
cwharland

Réponses:

40

En fait, ça vient. Dans le livre R en bref, il y a même une section sur l’utilisation de R avec Hadoop pour le traitement de données volumineuses. Il y a des problèmes à résoudre car R effectue tout son travail en mémoire, vous êtes donc limité à la quantité de RAM dont vous disposez.

RHadoop est un projet mature pour R et Hadoop

RHadoop a été divisé en plusieurs sous-projets, rhdfs, rhbase, rmr2, plyrmr et quickcheck ( wiki ).

MCP_infiltrator
la source
Mais utiliser R avec Hadoop surmonte-t-il cette limitation (devoir faire des calculs en mémoire)?
Felipe Almeida
RHadoop surmonte cette limitation. Le tutoriel ici: github.com/RevolutionAnalytics/rmr2/blob/master/docs/… énonce clairement. Vous devez passer à un état d'esprit mapreduce, mais cela fournit la puissance de R à l'environnement hadoop.
Steve Kallestad
2
Deux nouvelles alternatives méritent d’être mentionnées: SparkR databricks.com/blog/2015/06/09/… et h2o.ai h2o.ai/product, tous deux bien adaptés au Big Data.
Wacax
30

Le principal problème lié à l’utilisation de R pour les grands ensembles de données est la contrainte de RAM. La raison derrière la conservation de toutes les données dans la RAM est qu’elle permet un accès et une manipulation des données beaucoup plus rapides que le stockage sur des disques durs. Si vous êtes prêt à prendre un coup sur la performance, alors oui, il est tout à fait pratique de travailler avec de grands ensembles de données dans R .

  • Package RODBC: Permet de se connecter à une base de données externe à partir de R pour récupérer et gérer des données. Par conséquent, les données manipulées sont limitées à votre RAM. L'ensemble de données global peut aller beaucoup plus grand.
  • Le paquetage ff permet d’utiliser des ensembles de données plus grands que RAM en utilisant des pages mappées en mémoire.
  • BigLM: Il construit des modèles linéaires généralisés sur le Big Data. Il charge les données en mémoire par morceaux.
  • bigmemory: Un package R qui permet des analyses parallèles puissantes et économes en mémoire ainsi que l’exploration de données dans des ensembles de données volumineux. Il permet de stocker des objets volumineux (matrices, etc.) en mémoire (sur la RAM) en utilisant des objets pointeurs externes pour s'y référer.
Asheeshr
la source
1
Un autre paquetage est distribuéR, qui vous permet de travailler avec des fichiers distribués dans la RAM.
Adesantos
17

Quelques bonnes réponses ici. J'aimerais participer à la discussion en ajoutant les trois notes suivantes :

  1. L'accent mis par la question sur le volume de données tout en faisant référence au Big Data est certainement compréhensible et valable, compte tenu en particulier du problème de la croissance du volume de données dépassant la croissance exponentielle des capacités technologiques selon la loi de Moore ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. Cela dit, il est important de garder à l’esprit les autres aspects du concept de Big Data. Sur la base de Gartner définition de (Souligné par - AB): « Big data est élevé le volume , haute vitesse , et / ou haute variété des actifs d'information qui nécessitent de nouvelles formes de traitement pour permettre la prise de décision améliorée, la découverte des connaissances et de l' optimisation des processus. » (généralement désigné sous le nom de " modèle 3V "). Je le mentionne, car cela oblige les spécialistes des données et les autres analystes à rechercher et à utiliser des packages R centrés sur des aspects autres que le volume du big data (grâce à la richesse d'un énorme écosystème R ).

  3. Bien que les réponses existantes mentionnent certains packages R, liés au Big Data, pour une couverture plus complète , nous vous recommandons de vous reporter à la vue des tâches CRAN "Calcul parallèle et à haute performance avec R" ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), en particulier les sections "Informatique parallèle: Hadoop" et "Mémoire volumineuse et données insuffisantes " .

Aleksandr Blekh
la source
12

R est idéal pour le "big data"! Cependant, vous avez besoin d'un flux de travail car R est limité (avec une certaine simplification) par la quantité de mémoire vive du système d'exploitation. L’approche que j’adopte est d’interagir avec une base de données relationnelle (voir le RSQLitepackage permettant de créer et d’interagir avec une base de données SQLite), d’exécuter des requêtes de style SQL pour comprendre la structure des données, puis d’extraire des sous-ensembles particuliers de données à des fins de calcul intensif. analyses statistiques.

Cependant, il n’ya qu’une approche: il existe des packages qui vous permettent d’interagir avec d’autres bases de données (Monet, par exemple) ou d’exécuter des analyses en mode R avec moins de limites de mémoire (voir par exemple pbdR).

statsRus
la source
9

Considérant un autre critère, je pense que dans certains cas, utiliser Python peut être bien supérieur à R pour Big Data. Je connais l’utilisation généralisée de R dans les supports pédagogiques de science des données et les bonnes bibliothèques d’analyses de données disponibles, mais cela dépend parfois de l’équipe.

D'après mon expérience, pour les personnes déjà familiarisées avec la programmation, l'utilisation de Python offre beaucoup plus de flexibilité et de productivité par rapport à un langage comme R, qui n'est pas aussi bien conçu et puissant que Python en termes de langage de programmation. Pour preuve, dans un cours d’exploration de données de mon université, le meilleur projet final a été écrit en Python, bien que les autres aient accès à la riche bibliothèque d’analyses de données de R. En d'autres termes, la productivité globale (prise en compte du matériel pédagogique, de la documentation, etc.) pour Python est parfois meilleure que celle de R, même en l'absence de bibliothèques d'analyse de données à usage spécifique pour Python. En outre, il existe de bons articles expliquant le rythme rapide de Python dans la science des données: Python Displacing R et Rich Scientific Data Structures in Python. qui pourrait bientôt combler le manque de bibliothèques disponibles pour R.

Une autre raison importante de ne pas utiliser R réside dans le fait de travailler dans le monde réel avec des problèmes de Big Data. Contrairement à des problèmes d'ordre académique, d'autres outils et techniques sont nécessaires, tels que l'analyse, le nettoyage, la visualisation, la mise au rebut de sites Web, etc. sont beaucoup plus faciles en utilisant un langage de programmation à usage général. C'est peut-être pourquoi la langue par défaut utilisée dans de nombreux cours Hadoop (y compris le cours en ligne Udacity ) est Python.

Modifier:

Récemment, la DARPA a également investi 3 millions de dollars pour financer les capacités de traitement et de visualisation des données de Python pour les tâches Big Data, ce qui est clairement un signe de l'avenir de Python dans le Big Data. ( détails )

Amir Ali Akbari
la source
3
R est un plaisir de travailler avec pour la manipulation de données ( reshape2, plyret maintenant dplyr) et je ne pense pas que vous puissiez faire mieux que ggplot2/ ggvispour la visualisation
agave organique
@pearpies Comme je l’ai dit au début de ma réponse, j’admets les bonnes bibliothèques disponibles pour R, mais dans l’ensemble, lorsque l’on considère tous les domaines nécessaires au Big Data (ce que j’ai dit quelques-uns dans la réponse), R n’est pas correspond aux bibliothèques immenses et matures disponibles pour Python.
Amir Ali Akbari
5
Cette réponse semble être totalement anecdotique et ne montre pratiquement pas où R est faible par rapport à Python.
Stanekam
Oh mon Dieu! "Pour preuve, dans un cours de data mining de mon université, le meilleur projet final a été écrit en Python, bien que les autres aient accès à la riche bibliothèque d'analyse de données de R." Et vous voulez que les lecteurs respectent votre analyse? sensationnel. Pourrait-il y avoir d'autres facteurs impliqués dans le meilleur projet étant un projet python autre que le langage dans lequel il a été écrit? vraiment ....
Shawn Mehan
7

R est idéal pour de nombreuses analyses. Comme mentionné à propos, il existe de nouvelles adaptations pour les données volumineuses telles que MapR, RHadoop et les versions évolutives de RStudio.

Toutefois, si votre problème concerne les bibliothèques, gardez un œil sur Spark. Spark a été créé pour le Big Data et est BEAUCOUP plus rapide que Hadoop seul. Ses bibliothèques d’apprentissage machine, SQL, de streaming et de graphes sont en pleine croissance. Permettant ainsi une grande partie, voire la totalité, des analyses à effectuer dans le cadre (avec des API multilingues, je préfère Scala) sans avoir à mélanger les langages / outils.

Climbs_lika_Spyder
la source
4

Comme d'autres réponses l'ont noté, R peut être utilisé avec Hadoop et d'autres plates-formes informatiques distribuées pour l'adapter au niveau "Big Data". Cependant, si vous n'êtes pas spécifiquement lié à R, mais que vous souhaitez utiliser un environnement de type "R", Incanter est un projet qui pourrait bien fonctionner, car il est natif de la JVM (basé sur Clojure) et ne n'avez pas le "désaccord d'impédance" entre lui et Hadop que R a. C'est-à-dire, depuis Incanter, vous pouvez appeler les API Hadoop / HDFS natives Java sans passer par un pont JNI ou quoi que ce soit.

crime mental
la source
2

Je suis loin d’être un expert, mais ma compréhension du sujet me dit que R (superbe en statistique) et par exemple Python (superbe en plusieurs de ces choses où R manque) se complètent assez bien (comme le soulignaient les précédents posts) .

Stenemo
la source
0

Je pense qu’il existe une multitude d’outils pour travailler avec le Big Data dans R. sparklyr sera un excellent joueur dans ce domaine. sparklyr est une interface R pour Apache Spark et permet la connexion avec des clusters locaux et distants, fournissant ainsi un back-end dplyr. On peut également compter sur les bibliothèques d’apprentissage automatique d’Apache Spark. De plus, le traitement en parallèle est possible avec plusieurs paquets tels que rmpi et snow (contrôlé par l'utilisateur) ou doMC / foreach (basé sur le système).

paoloeusebi
la source