Ist die R-Sprache für Big Data geeignet?


48

R hat viele Bibliotheken, die auf Datenanalyse abzielen (z. B. JAGS, BUGS, ARULES usw.) und wird in populären Lehrbüchern erwähnt, wie z. B .: J. Krusche, Doing Bayesian Data Analysis; B.Lantz, "Maschinelles Lernen mit R".

Ich habe eine Richtlinie von 5 TB für einen Datensatz gesehen, der als Big Data betrachtet werden soll.

Meine Frage ist: Ist R für die Datenmenge geeignet, die normalerweise bei Big Data-Problemen auftritt? Gibt es Strategien für die Verwendung von R mit dieser Datenmenge?


4
Zusätzlich zu den folgenden Antworten ist zu beachten, dass die meisten Dinge, die Sie in Bezug auf Big Data von R benötigen, mit Zusammenfassungsdatensätzen ausgeführt werden können, die im Vergleich zu unformatierten Protokollen sehr klein sind. Das Abtasten aus dem Rohprotokoll bietet auch eine nahtlose Möglichkeit, R für die Analyse zu verwenden, ohne dass das Parsen von Zeilen und Zeilen eines Rohprotokolls zu Problemen führt. Für eine übliche Modellierungsaufgabe bei der Arbeit verwende ich beispielsweise routinemäßig die Funktion "Kartenreduzierung", um 32 GB Rohprotokolle zu 28 MB Benutzerdaten für die Modellierung zusammenzufassen.
Cwharland

Antworten:


40

Eigentlich kommt das schon vorbei. In dem Buch R in a Nutshell gibt es sogar einen Abschnitt über die Verwendung von R mit Hadoop für die Verarbeitung großer Datenmengen. Es gibt einige Umgehungsmöglichkeiten, die erledigt werden müssen, da R die gesamte Arbeit im Arbeitsspeicher erledigt, sodass Sie im Grunde auf die Ihnen zur Verfügung stehende RAM-Größe beschränkt sind.

Ein ausgereiftes Projekt für R und Hadoop ist RHadoop

RHadoop wurde in mehrere Unterprojekte unterteilt, rhdfs, rhbase, rmr2, plyrmr und quickcheck ( wiki ).


Aber überwindet die Verwendung von R mit Hadoop diese Einschränkung (Berechnungen im Speicher durchführen müssen)?
Felipe Almeida

RHadoop überwindet diese Einschränkung. Das Tutorial hier: github.com/RevolutionAnalytics/rmr2/blob/master/docs/… macht es deutlich. Sie müssen sich in eine Mapreduce-Denkweise verwandeln, die der Hadoop-Umgebung jedoch die Kraft von R verleiht.
Steve Kallestad

2
Zwei neue erwähnenswerte Alternativen sind: SparkR databricks.com/blog/2015/06/09/… und h2o.ai h2o.ai/product, beide gut geeignet für Big Data.
Wacax

30

Das Hauptproblem bei der Verwendung von R für große Datenmengen ist die RAM-Beschränkung. Der Grund für die Speicherung aller Daten im RAM ist, dass der Zugriff und die Datenmanipulation viel schneller erfolgen als beim Speichern auf Festplatten. Wenn Sie bereit sind, Leistungseinbußen hinzunehmen, ist es sehr praktisch, mit großen Datensätzen in R zu arbeiten .

  • RODBC-Paket: Ermöglicht die Verbindung zu einer externen Datenbank von R aus, um Daten abzurufen und zu verarbeiten. Daher sind die zu manipulierenden Daten auf Ihren Arbeitsspeicher beschränkt. Der Gesamtdatensatz kann viel größer werden.
  • Das ff-Paket ermöglicht die Verwendung größerer als RAM-Datensätze durch Verwendung von Seiten mit Speicherzuordnung.
  • BigLM: Es baut verallgemeinerte lineare Modelle auf Big Data auf. Es lädt Daten in Chunks in den Speicher.
  • bigmemory: Ein R-Paket, das leistungsfähige und speichereffiziente parallele Analysen und Data Mining von umfangreichen Datensätzen ermöglicht. Es ermöglicht das Speichern großer Objekte (Matrizen usw.) im Speicher (im RAM) unter Verwendung externer Zeigerobjekte, um auf diese zu verweisen.

1
Ein weiteres Paket ist DistributedR, mit dem Sie mit verteilten Dateien im RAM arbeiten können.
Adesantos

17

Einige gute Antworten hier. Ich möchte an der Diskussion teilnehmen, indem ich die folgenden drei Anmerkungen hinzufüge :

  1. Der Schwerpunkt der Frage nach der Datenmenge unter Bezugnahme auf Big Data sicherlich verständlich und gültig ist, vor allem die Berücksichtigung Problem der Datenvolumenwachstum outpacing technologischen Kapazitäten exponentielles Wachstum pro Moores Gesetz ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. Dennoch ist es wichtig, sich an andere Aspekte des Big-Data-Konzepts zu erinnern. Basierend auf der Definition von Gartner (Schwerpunkt Mine - AB): " Big Data ist ein Informationsbestand mit hohem Datenvolumen , hoher Geschwindigkeit und / oder großer Vielfalt , der neue Verarbeitungsformen erfordert, um eine verbesserte Entscheidungsfindung, Erkenntnisfindung und Prozessoptimierung zu ermöglichen." (normalerweise als " 3Vs-Modell " bezeichnet). Ich erwähne dies, weil es Datenwissenschaftler und andere Analysten dazu zwingt, nach R-Paketen zu suchen und diese zu verwenden, die sich nicht nur auf Volumenaspekte von Big Data konzentrieren (ermöglicht durch den Reichtum des enormen R-Ökosystems ).

  3. In den vorhandenen Antworten werden einige R-Pakete im Zusammenhang mit Big Data für eine umfassendere Abdeckung erwähnt . Ich empfehle jedoch, auf die CRAN-Task-Ansicht "Hochleistungsfähiges und paralleles Computing mit R" ( http: //cran.r-project) zu verweisen. org / web / views / HighPerformanceComputing.html ), insbesondere in den Abschnitten "Parallel Computing: Hadoop" und "Großer Speicher und Daten, die nicht aus dem Speicher stammen" .


12

R ist großartig für "Big Data"! Sie benötigen jedoch einen Workflow, da R (mit einer gewissen Vereinfachung) durch die Größe des Arbeitsspeichers im Betriebssystem begrenzt ist. Der von mir RSQLitegewählte Ansatz besteht darin, mit einer relationalen Datenbank zu interagieren (siehe Paket zum Erstellen und Interagieren mit einer SQLite-Datenbank), SQL-Abfragen auszuführen, um die Struktur der Daten zu verstehen, und dann bestimmte Teilmengen der Daten für rechenintensive Zwecke zu extrahieren statistische Analyse.

Dies ist jedoch nur ein Ansatz: Es gibt Pakete, mit denen Sie mit anderen Datenbanken (z. B. Monet) interagieren oder Analysen in R mit weniger Speicherbeschränkungen (z pbdR. B. siehe ) ausführen können .


9

In Anbetracht eines anderen Kriteriums denke ich, dass die Verwendung von Python in einigen Fällen R für Big Data weit überlegen sein kann. Ich kenne die weit verbreitete Verwendung von R in datenwissenschaftlichen Lehrmaterialien und die dafür verfügbaren guten Datenanalyse-Bibliotheken, aber manchmal hängt es nur vom Team ab.

Nach meiner Erfahrung bietet die Verwendung von Python für Personen, die bereits mit Programmierung vertraut sind, viel mehr Flexibilität und Produktivitätssteigerung im Vergleich zu einer Sprache wie R, die im Vergleich zu Python in Bezug auf eine Programmiersprache nicht so gut gestaltet und leistungsfähig ist. Als Beweis wurde in einem Data-Mining-Kurs an meiner Universität das beste Abschlussprojekt in Python geschrieben, obwohl die anderen auf die umfangreiche Datenanalysebibliothek von R zugreifen können. Das heißt, manchmal ist die Gesamtproduktivität (unter Berücksichtigung von Lernmaterialien, Dokumentation usw.) für Python sogar dann besser als für R, wenn spezielle Datenanalysebibliotheken für Python fehlen. Es gibt auch einige gute Artikel, die das schnelle Tempo von Python in der Datenwissenschaft erläutern: Python Displacing R und Rich Scientific Data Structures in Python das könnte bald die Lücke der verfügbaren Bibliotheken für R füllen.

Ein weiterer wichtiger Grund dafür, R nicht zu verwenden, ist, dass bei der Arbeit mit Big-Data-Problemen im Gegensatz zu rein akademischen Problemen andere Tools und Techniken erforderlich sind, wie z sind viel einfacher mit einer Allzweck-Programmiersprache. Aus diesem Grund wird in vielen Hadoop-Kursen (einschließlich des Online-Kurses von Udacity ) standardmäßig Python verwendet.

Bearbeiten:

Kürzlich hat DARPA außerdem 3 Millionen US-Dollar investiert, um die Datenverarbeitungs- und Visualisierungsfunktionen von Python für Big-Data-Jobs zu finanzieren. Dies ist ein klares Zeichen für die Zukunft von Python in Big Data. ( Einzelheiten )


3
Es ist ein Vergnügen, mit R für die Datenmanipulation ( reshape2, plyrund jetzt dplyr) zu arbeiten, und ich glaube nicht, dass Sie es besser können als ggplot2/ ggvisfür die Visualisierung
organische Agave

@pearpies Wie zu Beginn meiner Antwort gesagt, gebe ich die für R verfügbaren guten Bibliotheken zu, aber insgesamt, wenn man alle Bereiche berücksichtigt, die für Big Data benötigt werden (von denen ich einige in der Antwort erwähnt habe), ist R nein passen zu den ausgereiften und riesigen Bibliotheken, die für Python verfügbar sind.
Amir Ali Akbari

1
Peter von Continuum Analytics (eines der oben genannten Unternehmen des DARPA-Projekts ) arbeitet an einem sehr beeindruckenden OpenSource-Code für die Datenvisualisierung, der einfach Dinge tut, die andere Codesätze nicht können .
Fehler

5
Diese Antwort scheint völlig anekdotisch zu sein und zeigt kaum irgendwo, wo R im Vergleich zu Python schwach ist.
Stanekam

Du meine Güte! "Als Beweis wurde in einem Data-Mining-Kurs an meiner Universität das beste Abschlussprojekt in Python geschrieben, obwohl die anderen auf die umfangreiche Datenanalysebibliothek von R zugreifen können." Und Sie möchten, dass die Leser Ihre Analyse respektieren? Beeindruckend. Könnte es andere Faktoren geben, die für das beste Projekt eine Rolle spielen, als die Sprache, in der es geschrieben wurde? wirklich ....
Shawn Mehan

7

R eignet sich hervorragend für viele Analysen. Wie bereits erwähnt, gibt es neuere Anpassungen für Big Data wie MapR, RHadoop und skalierbare Versionen von RStudio.

Wenn Sie sich jedoch um Bibliotheken kümmern, sollten Sie Spark im Auge behalten. Spark wurde für Big Data entwickelt und ist VIEL schneller als Hadoop alleine. Es verfügt über stark wachsende Bibliotheken für maschinelles Lernen, SQL, Streaming und Diagramme. Auf diese Weise können viele, wenn nicht alle Analysen innerhalb des Frameworks (mit mehreren Sprach-APIs, ich bevorzuge Scala) durchgeführt werden, ohne dass zwischen Sprachen / Tools gewechselt werden muss.


4

Wie andere Antworten festgestellt haben, kann R zusammen mit Hadoop und anderen verteilten Computerplattformen verwendet werden, um es auf die "Big Data" -Ebene zu skalieren. Wenn Sie jedoch nicht speziell mit R verbunden sind, aber eine "R-ähnliche" Umgebung verwenden möchten, ist Incanter ein Projekt, das möglicherweise gut für Sie geeignet ist, da es in der JVM (basierend auf Clojure) und nicht in der JVM enthalten ist habe nicht die "Impedanzfehlanpassung" zwischen sich und Hadop, die R hat. Mit Incanter können Sie also native Java-Hadoop / HDFS-APIs aufrufen, ohne über eine JNI-Bridge oder etwas anderes zu gehen.


2

Ich bin weit davon entfernt, ein Experte zu sein, aber mein Verständnis des Themas sagt mir, dass R (hervorragend in der Statistik) und z. B. Python (hervorragend in einigen Dingen, in denen R fehlt) sich recht gut ergänzen (wie in früheren Beiträgen hervorgehoben). .


0

Ich denke, dass es in R. sparklyr tatsächlich eine Vielzahl von Tools für die Arbeit mit Big Data gibt, die auf diesem Gebiet eine hervorragende Rolle spielen werden. sparklyr ist eine R-Schnittstelle zu Apache Spark und ermöglicht die Verbindung mit lokalen und fernen Clustern, wodurch ein Dplyr-Backend bereitgestellt wird. Man kann sich auch auf die maschinellen Lernbibliotheken von Apache Spark verlassen. Darüber hinaus ist eine parallele Verarbeitung mit mehreren Paketen wie rmpi und snow (benutzergesteuert) oder doMC / foreach (systembasiert) möglich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.