Question

R a de nombreuses bibliothèques qui sont destinées à l'analyse des données (par exemple JAGS, BUGS, ARULES etc ..), et est mentionné dans les manuels populaires tels que: J.Krusche, faire l'analyse des données bayésienne; B.Lantz, "Apprentissage avec R".

Je l'ai vu une ligne directrice de 5TB pour un ensemble de données à considérer comme Big Data.

Ma question est: Est-R approprié pour la quantité de données généralement vu dans les problèmes Big Data? Y at-il des stratégies à employer lors de l'utilisation R avec cette taille de jeu de données?

Était-ce utile?

La solution

En fait, cela vient autour. Dans le livre R dans un Nutshell il y a même une section sur l'utilisation de R avec Hadoop pour le grand traitement des données. Il y a quelques contournements travail qui doivent être fait parce que R fait tout son travail dans la mémoire, de sorte que vous êtes essentiellement limité à la quantité de RAM que vous avez à votre disposition.

A maturité projet R et Hadoop est RHadoop

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

Autres conseils

Le principal problème avec l'utilisation de R pour les grands ensembles de données est la contrainte de RAM. La raison en gardant toutes les données dans la mémoire vive est qu'il offre un accès beaucoup plus rapide et les manipulations de données que ne le stockage sur disques durs. Si vous êtes prêt à prendre un coup sur la performance, alors oui, il est tout à fait pratique de travailler avec grands ensembles de données en R .

  • rodbc package: Permet la connexion à DB externe de R à récupérer les données de la poignée. Par conséquent, les données étant réglante est limitée à votre RAM. L'ensemble des données peut aller beaucoup plus grande.
  • Le package ff permet d'utiliser plus que des ensembles de données de RAM en utilisant les pages mappées en mémoire.
  • BigLM: Il construit des modèles linéaires généralisés sur les grandes données. Il charge les données en mémoire en morceaux.
  • BigMemory: Un package R qui permet parallèle puissant et économe en mémoire analyses et l'exploration de données de grands ensembles de données. Elle permet de stocker des objets volumineux (matrices, etc.) dans la mémoire (sur la RAM) en utilisant des objets de pointeur externes pour se référer à eux.

Quelques bonnes réponses ici. Je voudrais participer à la discussion en ajoutant les trois suivantes Notes :

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

  2. Cela dit, il est important de se rappeler d'autres aspects de la grande notion de données. Sur la base de Gartner définition »(accent mine - AB): « Big data est élevé Volume , haute vitesse et / ou haute variété 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 appelée " modèle 3VS "). Je mentionne cela, parce que cela force les données scientifiques et autres analystes à rechercher et utiliser des packages R qui mettent l'accent sur autres que le volume aspects de gros volumes de données (activée par richesse d'énormes R écosystème ).

  3. Alors que les réponses existantes mentionnent des packages R, liés aux gros volumes de données, pour une plus couverture complète , je vous recommande de se référer à CRAN Voir la tâche < strong> "haute performance et calcul parallèle avec R" ( rel="nofollow noreferrer"> http : //cran.r-project.org/web/views/HighPerformanceComputing.html ), en particulier les articles, "calcul parallèle: Hadoop" et "large mémoire et à la sortie données -De mémoire ".

R est grande pour "big data"! Cependant, vous avez besoin d'un flux de travail puisque R est limité (avec une certaine simplification) par la quantité de RAM dans le système d'exploitation. L'approche que je prends est d'interagir avec une base de données relationnelle (voir le paquet RSQLite pour créer et interagir avec un databse SQLite), exécuter des requêtes de type SQL pour comprendre la structure des données, puis extraire sous-ensembles de données pour computationally- analyse statistique intensive.

Cette seule approche, cependant: il y a des paquets qui vous permettent d'interagir avec d'autres bases de données (par exemple, Monet) ou des analyses en R avec exécuter moins de limitations de mémoire (par exemple, voir pbdR)

.

Considérant un autre critère, je pense que dans certains cas, en utilisant Python peut être bien supérieure à R pour Big Data. Je sais que l'utilisation à grande échelle de R dans le matériel pédagogique des sciences de données et les bibliothèques d'analyse de données disponibles bonne pour elle, mais parfois il dépends juste de l'équipe.

Dans mon expérience, pour les personnes déjà familiers avec la programmation, en utilisant Python offre beaucoup plus de flexibilité et de stimuler la productivité par rapport à une langue comme R, ce qui est aussi bien conçu et puissant par rapport à Python en termes d'un langage de programmation. Comme preuve, dans un cours d'exploration de données dans mon université, le meilleur projet final a été écrit en Python, bien que les autres ont accès à la bibliothèque riche d'analyse des données de R. C'est, parfois la productivité globale (matériel d'apprentissage, considérant la documentation, etc.) pour Python peut être mieux que R même dans l'absence de bibliothèques d'analyse des données à des fins spéciales pour Python. En outre, il y a quelques bons articles expliquant le rythme rapide de Python dans la science des données: Structures Rich données scientifiques en Python qui pourrait bientôt remplir l'écart des bibliothèques disponibles pour R.

Une autre raison importante pour ne pas utiliser R est lorsque l'on travaille avec le monde réel des problèmes Big Data, contrairement aux problèmes que académiques, il y a beaucoup besoin d'autres outils et techniques, comme les données d'analyse syntaxique, le nettoyage, la visualisation, la casse web, et beaucoup d'autres qui sont beaucoup plus facile en utilisant un langage de programmation général. Cela peut être la raison pour laquelle la langue par défaut utilisé dans de nombreux cours Hadoop (y compris du Udacity cours en ligne ) est Python.

Modifier

Récemment DARPA a investi 3 millions $ au fonds d'aide de capacités de traitement et de visualisation des données Python pour les gros travaux de données, ce qui est clairement un signe de l'avenir de Python dans Big Data. ( )

R est grande pour beaucoup d'analyse. Comme il est mentionné au sujet, il y a des adaptations pour les grandes nouvelles données comme MapR, RHadoop et versions évolutives de rstudio.

Cependant, si votre souci est des bibliothèques, gardez l'œil sur Spark. Spark a été créé pour les grandes données et est beaucoup plus rapide que Hadoop seul. Il a de plus en plus largement l'apprentissage machine, SQL, le streaming et les bibliothèques graphiques. Permettant ainsi à beaucoup, sinon la totalité de l'analyse à faire dans le cadre (avec plusieurs API de langue, je préfère Scala) sans avoir à mélanger entre les langues / outils.

Comme d'autres réponses ont noté, R peut être utilisé avec Hadoop et d'autres plates-formes informatiques distribués à l'échelle vers le haut au niveau « Big Data ». Toutefois, si vous n'êtes pas marié à R spécifiquement, mais sont prêts à utiliser un « R comme » l'environnement, incantateur est un projet qui pourrait bien fonctionner pour vous, car il est originaire de la machine virtuelle Java (basé sur Clojure) et ne pas la « différence d'impédance » entre lui-même et Hadop que R a. C'est-à-dire de incantateur, vous pouvez appeler les API Java natives Hadoop HDFS / sans avoir besoin de passer par un pont JNI ou quoi que ce soit.

Je suis loin d'être un expert, mais ma compréhension du sujet me dit que R (superbe dans les statistiques) et par exemple Python (superbe dans plusieurs de ces choses où R fait défaut) se complète très bien (comme sur pointé par les messages précédents).

Je pense qu'il ya effectivement un pletora d'outils pour travailler avec de grandes données dans R.  sparklyr sera un grand joueur dans ce domaine. sparklyr est une interface R à Spark et permet la connexion avec les clusters locaux et distants, en fournissant un arrière-plan de dplyr. On peut aussi compter sur les bibliothèques d'apprentissage machine Spark Apache. En outre le traitement parallèle est possible avec plusieurs paquets tels que IPMB et la neige (contrôlé par l'utilisateur) ou domc / foreach (base du système).

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