R tiene muchas bibliotecas dirigidas al análisis de datos (por ejemplo, JAGS, BUGS, ARULES, etc.), y se menciona en libros de texto populares como: J.Krusche, Doing Bayesian Data Analysis; B.Lantz, "Aprendizaje automático con R".
He visto una directriz de 5 TB para que un conjunto de datos se considere como Big Data.
Mi pregunta es: ¿R es adecuado para la cantidad de datos que se suele ver en los problemas de Big Data? ¿Hay estrategias a emplear cuando se usa R con este tamaño de conjunto de datos?
Respuestas:
En realidad esto está llegando. En el libro R in a Nutshell hay incluso una sección sobre el uso de R con Hadoop para el procesamiento de big data. Hay algunas soluciones que deben hacerse porque R hace todo su trabajo en la memoria, por lo que básicamente está limitado a la cantidad de RAM que tiene disponible.
Un proyecto maduro para R y Hadoop es RHadoop
RHadoop se ha dividido en varios subproyectos, rhdfs, rhbase, rmr2, plyrmr y quickcheck ( wiki ).
fuente
El principal problema con el uso de R para grandes conjuntos de datos es la restricción de RAM. La razón detrás de mantener todos los datos en RAM es que proporciona un acceso mucho más rápido y manipulaciones de datos que el almacenamiento en discos duros. Si usted está dispuesto a tomar un golpe en el rendimiento, entonces sí, es bastante práctico para trabajar con grandes conjuntos de datos en R .
fuente
Algunas buenas respuestas aquí. Me gustaría unirme a la discusión agregando las siguientes tres notas :
El énfasis de la pregunta en el volumen de datos al referirse a Big Data es ciertamente comprensible y válido, especialmente considerando el problema del crecimiento del volumen de datos que supera el crecimiento exponencial de las capacidades tecnológicas según la Ley de Moore ( http://en.wikipedia.org/wiki/Moore % 27s_law ).
Dicho esto, es importante recordar otros aspectos del concepto de big data. Basado en la definición de Gartner (énfasis mío - AB): " Big data son activos de información de gran volumen , alta velocidad y / o gran variedad que requieren nuevas formas de procesamiento para permitir una mejor toma de decisiones, descubrimiento de información y optimización de procesos". (generalmente conocido como el " modelo 3Vs "). Menciono esto, porque obliga a los científicos de datos y otros analistas a buscar y usar paquetes R que se centren en otros aspectos que no sean el volumen de big data (habilitado por la riqueza del enorme ecosistema R ).
Si bien las respuestas existentes mencionan algunos paquetes R, relacionados con big data, para una cobertura más completa , recomendaría consultar la vista de tareas CRAN "Computación paralela y de alto rendimiento con R" ( http: //cran.r-project. org / web / views / HighPerformanceComputing.html ), en particular, las secciones "Computación paralela: Hadoop" y "Gran memoria y datos sin memoria" .
fuente
¡R es genial para "big data"! Sin embargo, necesita un flujo de trabajo ya que R está limitado (con cierta simplificación) por la cantidad de RAM en el sistema operativo. El enfoque que adopto es interactuar con una base de datos relacional (consulte el
RSQLite
paquete para crear e interactuar con una base de datos SQLite), ejecutar consultas de estilo SQL para comprender la estructura de los datos y luego extraer subconjuntos particulares de los datos para computacionalmente intensivo análisis estadístico.Sin embargo, este es solo un enfoque: hay paquetes que le permiten interactuar con otras bases de datos (por ejemplo, Monet) o ejecutar análisis en R con menos limitaciones de memoria (por ejemplo, ver
pbdR
).fuente
Considerando otro criterio, creo que en algunos casos usar Python puede ser muy superior a R para Big Data. Conozco el uso generalizado de R en los materiales educativos de ciencia de datos y las buenas bibliotecas de análisis de datos disponibles, pero a veces solo depende del equipo.
En mi experiencia, para las personas que ya están familiarizadas con la programación, el uso de Python proporciona mucha más flexibilidad y aumento de la productividad en comparación con un lenguaje como R, que no está tan bien diseñado y potente en comparación con Python en términos de un lenguaje de programación. Como evidencia, en un curso de minería de datos en mi universidad, el mejor proyecto final fue escrito en Python, aunque los otros tienen acceso a la rica biblioteca de análisis de datos de R. Es decir, a veces la productividad general (considerando materiales de aprendizaje, documentación, etc.) para Python puede ser mejor que R incluso en la falta de bibliotecas de análisis de datos de propósito especial para Python. Además, hay algunos buenos artículos que explican el rápido ritmo de Python en ciencia de datos: Python Desplazamiento R y estructuras de datos científicos enriquecidos en Python que pronto puede llenar el vacío de las bibliotecas disponibles para R.
Otra razón importante para no usar R es cuando se trabaja con problemas de Big Data del mundo real, a diferencia de los problemas académicos, hay mucha necesidad de otras herramientas y técnicas, como análisis de datos, limpieza, visualización, desguace web y muchas otras que son mucho más fáciles usando un lenguaje de programación de propósito general. Esta puede ser la razón por la cual el idioma predeterminado utilizado en muchos cursos de Hadoop (incluido el curso en línea de Udacity ) es Python.
Editar:
Recientemente, DARPA también ha invertido $ 3 millones para ayudar a financiar las capacidades de procesamiento y visualización de datos de Python para trabajos de Big Data, lo que es claramente una señal del futuro de Python en Big Data. ( detalles )
fuente
reshape2
,plyr
y ahoradplyr
) y no creo que pueda hacerlo mejor queggplot2
/ggvis
para la visualizaciónR es genial para muchos análisis. Como se mencionó anteriormente, hay adaptaciones más recientes para big data como MapR, RHadoop y versiones escalables de RStudio.
Sin embargo, si su preocupación son las bibliotecas, esté atento a Spark. Spark fue creado para Big Data y es MUCHO más rápido que Hadoop solo. Tiene bibliotecas de aprendizaje automático, SQL, transmisión y gráficos en gran crecimiento. Por lo tanto, permite que gran parte, si no todo, el análisis se realice dentro del marco (con API de múltiples idiomas, prefiero Scala) sin tener que barajar entre idiomas / herramientas.
fuente
Como han señalado otras respuestas, R puede usarse junto con Hadoop y otras plataformas informáticas distribuidas para escalarlo al nivel de "Big Data". Sin embargo, si no está casado con R específicamente, pero está dispuesto a usar un entorno "similar a R", Incanter es un proyecto que podría funcionar bien para usted, ya que es nativo de JVM (basado en Clojure) y no No tiene el "desajuste de impedancia" entre sí y Hadop que R tiene. Es decir, desde Incanter, puede invocar las API Hadoop / HDFS nativas de Java sin necesidad de pasar por un puente JNI ni nada.
fuente
Estoy lejos de ser un experto, pero mi comprensión del tema me dice que R (excelente en estadísticas) y, por ejemplo, Python (excelente en varias de esas cosas en las que R carece) se complementan bastante bien (como se señaló en publicaciones anteriores) .
fuente
Creo que en realidad hay una gran cantidad de herramientas para trabajar con big data en R. sparklyr será un gran jugador en ese campo. sparklyr es una interfaz R para Apache Spark y permite la conexión con clústeres locales y remotos, proporcionando un back-end dplyr. También se puede confiar en las bibliotecas de aprendizaje automático de Apache Spark. Además, el procesamiento en paralelo es posible con varios paquetes como rmpi y snow (controlado por el usuario) o doMC / foreach (basado en el sistema).
fuente