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?
Antworten:
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 ).
quelle
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 .
quelle
Einige gute Antworten hier. Ich möchte an der Diskussion teilnehmen, indem ich die folgenden drei Anmerkungen hinzufüge :
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 ).
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 ).
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" .
quelle
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
RSQLite
gewä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 .quelle
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 )
quelle
reshape2
,plyr
und jetztdplyr
) zu arbeiten, und ich glaube nicht, dass Sie es besser können alsggplot2
/ggvis
für die VisualisierungR 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.
quelle
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.
quelle
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). .
quelle
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.
quelle