¿Se considera que R no es adecuado para Big Data en comparación con Python?

El objetivo principal del análisis de big data es ayudar a las empresas a tomar decisiones comerciales más informadas al permitir que DATA Scientist, modeladores predictivos y otros profesionales de análisis analicen grandes volúmenes de datos de transacciones, así como otras formas de datos que los Big Data convencionales pueden aprovechar. , Ciencia de datos – Clases de entrenamiento de curso combinado en línea | Big Data, Data Science – Cursos combinados Cursos Programas de inteligencia empresarial (BI) en línea. Eso podría incluir registros del servidor web y datos de Internet Click Stream, contenido de redes sociales e informes de actividad de redes sociales, texto de correos electrónicos de clientes y respuestas de encuestas, registros detallados de llamadas de teléfonos móviles y datos de máquinas capturados por sensores conectados a INTERNET. Algunas personas se asocian exclusivamente Big Data con datos semiestructurados y no estructurados de ese tipo, pero las firmas consultoras como Gartner Inc. y Forrest-er Research Inc. también consideran que las transacciones y otros datos estructurados son componentes válidos de las aplicaciones de análisis de Big Data.

Los grandes datos se pueden analizar con las herramientas de software comúnmente utilizadas como parte de las disciplinas de Advance Analytics, como la minería de datos de análisis predictivo, el análisis de texto y el método estadístico. El software de BI convencional y las herramientas de visualización también pueden desempeñar un papel en el proceso de análisis. Pero los datos semiestructurados y no estructurados pueden no encajar bien en el Data Warehouse tradicional basado en la base de datos relacional. Además, es posible que los almacenes de datos no puedan manejar las demandas de procesamiento que plantean los conjuntos de grandes datos que deben actualizarse con frecuencia o incluso de manera continua, por ejemplo, datos en tiempo real sobre el rendimiento de aplicaciones móviles o de oleoductos y gasoductos. Como resultado, muchas organizaciones que buscan recopilar, procesar y analizar grandes datos han recurrido a una nueva clase de tecnologías que incluye Hadoop y herramientas relacionadas como Yarn Spook, Spark y Pig, así como bases de datos No Sql. Esas tecnologías forman el núcleo de un marco de software de código abierto que admite el procesamiento de conjuntos de datos grandes y diversos en sistemas en clúster.

En algunos casos, los sistemas Hadoop Cluster y No SQL se están utilizando como plataformas de aterrizaje y áreas de preparación de datos antes de que se carguen en un almacén de datos para su análisis, a menudo en forma resumida que es más propicio para las estructuras relacionales. Sin embargo, cada vez más, los proveedores de Big Data están impulsando el concepto de una toma de datos de Hadoop que sirve como el depósito central para los flujos entrantes de datos sin procesar de una organización. En tales arquitecturas, los subconjuntos de datos se pueden filtrar para su análisis en almacenes de datos y bases de datos de análisis, o se pueden analizar directamente en Hadoop utilizando herramientas de consulta por lotes, software de procesamiento de flujo y tecnologías SQL y Hadoop que ejecutan consultas interactivas y ad hoc escritas en SQL Las posibles trampas que pueden hacer tropezar a las organizaciones en iniciativas de análisis de big data incluyen la falta de habilidades analíticas internas y el alto costo de contratar profesionales analíticos experimentados. La cantidad de información que generalmente está involucrada, y su variedad, también pueden causar dolores de cabeza en la gestión de datos, incluidos la calidad de los datos y problemas de consistencia. Además, integrar sistemas Hadoop y almacenes de datos puede ser un desafío, aunque varios proveedores ahora ofrecen conectores de software entre Hadoop y bases de datos relacionales, así como otras herramientas de integración de datos con capacidades de big data.

Las empresas están utilizando el poder de los conocimientos proporcionados por Big Data para establecer instantáneamente quién hizo qué, cuándo y dónde. El mayor valor creado por estos conocimientos oportunos y significativos de grandes conjuntos de datos es a menudo la toma de decisiones empresariales efectivas que permiten los conocimientos.

Esta es una pregunta muy general. Y, como ya se mencionó en otras respuestas, cuando miras puramente ambos idiomas, ves que ninguno es muy adecuado. Por mi experiencia y por lo que he escuchado de los profesionales, Scala generalmente es más adecuado cuando trabajas con big data.

Sin embargo, eso no significa que R o Python se consideren “inadecuados” para big data ; Una cosa de la que puede derivar esto es el hecho de que hay tantas interfaces para HDFS, Hadoop, Spark, … de Python y R. Además, incluso diría que la mayoría de los que provienen de la ciencia de datos siguen usando estos dos idiomas cuando exploran big data. Trabajar con Python y / o R en un contexto de big data es muy cómodo y conveniente (ya que no necesita aprender Scala, y quiero decir que no de una manera específica buena o mala).

Entonces, Python y R no son inadecuados, pero eso no significa que sea necesariamente la mejor opción .

Creo que depende en gran medida de cuál sea su objetivo mediante el uso de R o Python en un contexto de big data. Tomando el ejemplo más común, Spark, donde R y Python son los más utilizados por quienes provienen de un contexto de ciencia de datos, el desglose suele ser el siguiente:

  • Si su objetivo es construir tuberías ETL, proyectos más grandes en producción o transmisión de datos, encontrará que Scala es más fácil de trabajar;
  • Para proyectos más pequeños y ad hoc (que posiblemente aborden el aprendizaje automático y el procesamiento del lenguaje natural), Python es una buena opción.
  • Del mismo modo, para proyectos más pequeños que requieren visualización o paquetes CRAN (¡muchas opciones!), R también puede ser una buena opción; La desventaja aquí es que la recopilación de datos es costosa y el tamaño de la recopilación es limitado [Fuente: (R y Spark: Cómo analizar datos utilizando RStudio’s Sparklyr y H2O’s R …].

Verá, Python y R pueden ser adecuados en un contexto de big data cuando es la herramienta adecuada para el trabajo .

Si desea comenzar con Python o R para Spark, considere los siguientes recursos:

  • PySpark: Apache Spark en Python: Guía para principiantes, PySpark Cheat Sheet: Spark en Python, PySpark Cheat Sheet: Spark DataFrames en Python, mahmoudparsian / pyspark-tutorial
  • R: Introducción a Spark en R usando la interfaz sparklyr, sparklyr – R para Apache Spark y SparkR (R en Spark)

En cuanto a los lenguajes en sí mismos, ninguno de los dos es realmente muy adecuado para el trabajo: R es un cerdo de memoria y un solo núcleo por naturaleza, Python tiene el bloqueo de intérprete global, lo que dificulta el procesamiento de múltiples núcleos. Por lo tanto, hay algunos problemas de escala en una sola máquina para ambos idiomas.

Pero qué tan bien puede escalar realmente los cálculos, depende más de qué tan bien es el ecosistema alrededor del idioma y qué tipo de marcos de Big Data son compatibles. Para dar una lista muy no exhaustiva:

  • HDFS
  • Kafka
  • Chispa
  • Tormenta
  • (como dije, no exhaustivo;))

Y mientras comencé esta respuesta, esperando contarles ahora cómo Python ofrece más opciones de interfaz *, algunas búsquedas en la web me enseñaron lo contrario:

  • HDFS
  • R: RevolutionAnalytics / rhdfs
  • Python: Índice del paquete Python / spotify / snakebite
  • Kafka
    • R: CRAN – Paquete rkafka
    • Python: índice de paquete kafka-python 0.9.5 / Python
  • Chispa
    • R: SparkR (R en Spark)
    • Python: Guía de programación de Spark
  • Tormenta
    • R: CRAN – Tormenta del paquete
    • Python: Parsely / streamparse
  • Por lo tanto, parece que ambos idiomas tienen soluciones para interactuar con muchas de las herramientas / marcos de Big Data.

    Sin embargo, Python aún tiene dos ventajas distintas en comparación con R:

    1. Mejor soporte para el aprendizaje automático en Spark. Puede que eso no sea relevante para usted, pero para mí lo es y espero que solo sea más importante. Spark es (¿convirtiéndose?) El marco dominante para construir aplicaciones de Big Data, por lo que las características disponibles en Spark son importantes.
    2. Python es algo más familiar para las personas que llegan a Big Data desde una perspectiva CS / IT. Y el lenguaje tiene un ecosistema muy amplio para todo tipo de problemas no analíticos. Lo que probablemente facilita la integración de las soluciones de Python.

    Para llegar a una conclusión: no, no se considera inadecuado en comparación con Python. Y esperaría que la brecha entre las dos capacidades se reduzca con el tiempo.

    Para R específicamente, también te puede interesar la respuesta de Jeff Hammerbacher a ¿Cómo se pueden usar R y Hadoop juntos?


    * Prefiero Python sobre R, lo que me puede sesgar un poco.