Il linguaggio R è adatto per i Big Data


48

R ha molte librerie che si rivolgono all'analisi dei dati (ad esempio JAGS, BUGS, ARULES ecc.), Ed è menzionata in libri di testo popolari come: J.Krusche, Doing Bayesian Data Analysis; B.Lantz, "Apprendimento automatico con R".

Ho visto una linea guida di 5 TB per un set di dati da considerare come Big Data.

La mia domanda è: R è adatto per la quantità di dati normalmente riscontrata nei problemi dei Big Data? Ci sono strategie da utilizzare quando si utilizza R con questo set di dati di queste dimensioni?


4
Oltre alle risposte di seguito, una buona cosa da ricordare è il fatto che la maggior parte delle cose di cui hai bisogno da R riguardo ai Big Data può essere fatta con insiemi di dati di riepilogo molto piccoli rispetto ai registri non elaborati. Il campionamento dal registro non elaborato fornisce anche un modo semplice per utilizzare R per l'analisi senza il mal di testa delle linee di analisi e delle linee di un registro non elaborato. Ad esempio, per un'attività di modellazione comune sul lavoro, utilizzo abitualmente la mappa riduci per riepilogare 32 GB di log non elaborati in 28 Mb di dati utente per la modellazione.
cwharland,

Risposte:


40

In realtà questo sta arrivando. Nel libro R in breve c'è anche una sezione sull'uso di R con Hadoop per l'elaborazione dei big data. Ci sono alcune soluzioni alternative che devono essere fatte perché R fa tutto il suo lavoro in memoria, quindi sei sostanzialmente limitato alla quantità di RAM che hai a tua disposizione.

Un progetto maturo per R e Hadoop è RHadoop

RHadoop è stato suddiviso in diversi sottoprogetti, rhdfs, rhbase, rmr2, plyrmr e quickcheck ( wiki ).


Ma usare R con Hadoop supera questa limitazione (bisogna fare calcoli in memoria)?
Felipe Almeida,

RHadoop supera questa limitazione. Il tutorial qui: github.com/RevolutionAnalytics/rmr2/blob/master/docs/… lo spiega chiaramente. Devi passare a una mentalità ridotta, ma fornisce il potere di R all'ambiente hadoop.
Steve Kallestad,

2
Due nuove alternative che vale la pena menzionare sono: SparkR databricks.com/blog/2015/06/09/… e h2o.ai h2o.ai/product sono entrambi adatti per i big data.
Wacax,

30

Il problema principale con l'utilizzo di R per insiemi di dati di grandi dimensioni è il vincolo RAM. Il motivo alla base della conservazione di tutti i dati nella RAM è che fornisce un accesso e una manipolazione dei dati molto più rapidi rispetto alla memorizzazione su HDD. Se siete disposti a prendere un colpo sulle prestazioni, allora sì, è abbastanza pratico per lavorare con grandi serie di dati in R .

  • Pacchetto RODBC: consente la connessione a DB esterni da R per recuperare e gestire i dati. Pertanto, i dati manipolati sono limitati alla RAM. Il set di dati complessivo può andare molto più grande.
  • Il pacchetto ff consente di utilizzare set di dati più grandi della RAM utilizzando pagine mappate in memoria.
  • BigLM: costruisce modelli lineari generalizzati su big data. Carica i dati in memoria in blocchi.
  • bigmemory: un pacchetto R che consente analisi parallele potenti ed efficienti in termini di memoria e il data mining di enormi set di dati. Permette di memorizzare oggetti di grandi dimensioni (matrici ecc.) In memoria (sulla RAM) usando oggetti puntatore esterni per fare riferimento a loro.

1
Un altro pacchetto è distribuito R che consente di lavorare con file distribuiti nella RAM.
adesantos,

17

Alcune buone risposte qui. Vorrei partecipare alla discussione aggiungendo le seguenti tre note :

  1. L'enfasi della domanda sul volume di dati mentre si fa riferimento ai Big Data è certamente comprensibile e valida, soprattutto considerando il problema della crescita del volume di dati che supera la crescita esponenziale delle capacità tecnologiche secondo la Legge di Moore ( http://en.wikipedia.org/wiki/Moore % 27s_law ).

  2. Detto questo, è importante ricordare altri aspetti del concetto di big data. Basato sulla definizione di Gartner (enfasi sulla miniera - AB): "I big data sono risorse ad alto volume , ad alta velocità e / o ad alta varietà che richiedono nuove forme di elaborazione per consentire un migliore processo decisionale, analisi approfondita e ottimizzazione dei processi". (di solito denominato " modello 3V "). Ne parlo, perché costringe i data scientist e altri analisti a cercare e utilizzare pacchetti R incentrati su aspetti diversi dal volume dei big data (abilitati dalla ricchezza dell'enorme ecosistema R ).

  3. Mentre le risposte esistenti menzionano alcuni pacchetti R, relativi ai big data, per una copertura più completa , raccomanderei di fare riferimento a Visualizzazione attività CRAN " Elaborazione parallela ad alte prestazioni con R" ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), in particolare le sezioni " Elaborazione parallela: Hadoop" e "Memoria estesa e dati di memoria insufficiente" .


12

R è ottimo per i "big data"! Tuttavia, è necessario un flusso di lavoro poiché R è limitato (con una certa semplificazione) dalla quantità di RAM nel sistema operativo. L'approccio che seguo è quello di interagire con un database relazionale (vedere il RSQLitepacchetto per la creazione e l'interazione con un database SQLite), eseguire query in stile SQL per comprendere la struttura dei dati, quindi estrarre particolari sottoinsiemi di dati per un uso intensivo di calcolo analisi statistica.

Questo solo un approccio, tuttavia: ci sono pacchetti che ti consentono di interagire con altri database (ad esempio, Monet) o eseguire analisi in R con minori limiti di memoria (ad esempio, vedi pbdR).


9

Considerando un altro criterio, penso che in alcuni casi l'uso di Python potrebbe essere molto superiore a R per i Big Data. Conosco l'uso diffuso di R nei materiali didattici per la scienza dei dati e le buone librerie di analisi dei dati disponibili per questo, ma a volte dipende solo dal team.

Nella mia esperienza, per le persone che hanno già familiarità con la programmazione, l'uso di Python offre molta più flessibilità e un aumento della produttività rispetto a un linguaggio come R, che non è ben progettato e potente rispetto a Python in termini di un linguaggio di programmazione. Come prova, in un corso di data mining nella mia università, il miglior progetto finale è stato scritto in Python, sebbene gli altri abbiano accesso alla ricca libreria di analisi dei dati di R. Cioè, a volte la produttività complessiva (considerando materiali di apprendimento, documentazione, ecc.) Per Python può essere migliore di R anche in mancanza di librerie di analisi dei dati per scopi speciali per Python. Inoltre, ci sono alcuni buoni articoli che spiegano il ritmo veloce di Python nella scienza dei dati: Python Displacing R e Rich Scientific Data Structures in Python che potrebbe presto colmare il divario delle librerie disponibili per R.

Un altro motivo importante per non usare R è quando si lavora con i problemi dei Big Data nel mondo reale, contrariamente ai soli problemi accademici, c'è molto bisogno di altri strumenti e tecniche, come l'analisi dei dati, la pulizia, la visualizzazione, la web scrapping e molti altri che sono molto più semplici utilizzando un linguaggio di programmazione generico. Questo potrebbe essere il motivo per cui la lingua predefinita utilizzata in molti corsi Hadoop (incluso il corso online di Udacity ) è Python.

Modificare:

Recentemente DARPA ha anche investito $ 3 milioni per aiutare a finanziare le capacità di elaborazione e visualizzazione dei dati di Python per i lavori sui big data, che è chiaramente un segno del futuro di Python nei Big Data. ( dettagli )


3
R è un piacere lavorare con per la manipolazione dei dati ( reshape2, plyr, e ora dplyr) e non credo che si può fare meglio di ggplot2/ ggvisper la visualizzazione
organico agave

@pearpies Come detto all'inizio della mia risposta, ammetto le buone librerie disponibili per R, ma nel complesso, quando si considerano tutte le aree necessarie per i big data (che come ho detto alcuni di loro nella risposta), R è no corrispondenza per le librerie mature ed enormi disponibili per Python.
Amir Ali Akbari,


5
Questa risposta sembra essere totalmente aneddotica e difficilmente mostra da nessuna parte dove R è debole rispetto a Python.
stanekam,

Oh mio Dio! "Come prova, in un corso di data mining nella mia università, il miglior progetto finale è stato scritto in Python, sebbene gli altri abbiano accesso alla ricca libreria di analisi dei dati di R." E vuoi che i lettori rispettino la tua analisi? Wow. Potrebbero esserci altri fattori coinvolti nel miglior progetto in un progetto Python oltre alla lingua in cui è stato scritto? davvero ....
Shawn Mehan il

7

R è ottimo per molte analisi. Come accennato, ci sono adattamenti più recenti per big data come MapR, RHadoop e versioni scalabili di RStudio.

Tuttavia, se la tua preoccupazione sono le biblioteche, tieni d'occhio Spark. Spark è stato creato per i big data ed è MOLTO più veloce del solo Hadoop. Ha librerie di machine learning, SQL, streaming e grafi in forte crescita. In questo modo, se non tutte le analisi devono essere eseguite all'interno del framework (con API in più lingue, preferisco Scala) senza dover mescolare tra lingue / strumenti.


4

Come hanno notato altre risposte, R può essere utilizzato insieme a Hadoop e altre piattaforme di elaborazione distribuita per ridimensionarlo al livello di "Big Data". Tuttavia, se non sei specificamente sposato con R, ma sei disposto a utilizzare un ambiente "simile a R", Incanter è un progetto che potrebbe funzionare bene per te, poiché è nativo di JVM (basato su Clojure) e non hanno la "discrepanza di impedenza" tra se stesso e Hadop che R ha. Vale a dire, da Incanter, puoi invocare API Hadoop / HDFS native Java senza dover passare attraverso un bridge JNI o ​​altro.


2

Sono ben lungi dall'essere un esperto, ma la mia comprensione della materia mi dice che R (superbo in statistica) ed es. Python (superbo in molte di quelle cose in cui manca R) si completano abbastanza bene (come sottolineato da precedenti post) .


0

Penso che in realtà ci sia una pletora di strumenti per lavorare con i big data in R. sparklyr sarà un grande giocatore in questo campo. sparklyr è un'interfaccia R per Apache Spark e consente la connessione con cluster locali e remoti, fornendo un back-end dplyr. Si può anche fare affidamento sulle librerie di machine learning di Apache Spark. Inoltre, l'elaborazione parallela è possibile con diversi pacchetti come rmpi e snow (controllato dall'utente) o doMC / foreach (basato sul sistema).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.