¿Python es adecuado para big data?

14

Leí en esta publicación ¿Es el lenguaje R adecuado para Big Data lo que constituye big data 5TB, y si bien hace un buen trabajo al proporcionar información sobre la viabilidad de trabajar con este tipo de datos R, proporciona muy poca información Python? Me preguntaba si Pythonpuede funcionar con esta cantidad de datos también.

rabioso
fuente

Respuestas:

18

Para aclarar, creo que las referencias de preguntas originales de OP probablemente no sean las mejores para un formato de tipo SO, pero ciertamente representaré pythonen este caso particular.

Permítanme comenzar diciendo que, independientemente del tamaño de sus datos, pythonno debería ser su factor limitante. De hecho, solo hay un par de problemas principales con los que se encontrará al tratar con grandes conjuntos de datos:

  • Lectura de datos en memoria : este es, con mucho, el problema más común que se enfrenta en el mundo de los grandes datos. Básicamente, no puede leer más datos de los que tiene memoria (RAM). La mejor manera de solucionar esto es realizar operaciones atómicas en sus datos en lugar de intentar leer todo de una vez.
  • Almacenamiento de datos : en realidad, esta es solo otra forma del problema anterior, para el momento de ponerse al día 1TB, debe comenzar a buscar almacenamiento en otro lugar. AWS S3 es el recurso más común y pythontiene una botobiblioteca fantástica para facilitar el liderazgo con grandes datos.
  • Latencia de red : mover datos entre diferentes servicios será su cuello de botella. No hay una gran cantidad de cosas que pueda hacer para solucionar esto, aparte de tratar de elegir recursos compartidos y enchufarlo a la pared.
indico
fuente
13

Hay que entender un par de cosas cuando se trata de Big Data:

¿Qué es Big data?

Es posible que conozca las famosas V de Big Data: volumen, velocidad, variedad ... Por lo tanto, Python puede no ser adecuado para todos. Y va con todas las herramientas de ciencia de datos disponibles. Necesita saber qué herramienta es buena para qué propósito.

Si se trata de un gran volumen de datos:

  • Cerdo / Colmena / Tiburón - Limpieza de datos y trabajo ETL
  • Hadoop / Spark - Computación paralela distribuida
  • Mahout / ML-Lib - Aprendizaje automático

Ahora, puede usar R / Python en etapas intermedias, pero se dará cuenta de que se convierten en un cuello de botella en todo el proceso.

Si se trata de la velocidad de los datos:

  • Kafka / Storm - Sistema de alto rendimiento

La gente está tratando de R / Python aquí, pero nuevamente depende del tipo de paralelismo que desee y la complejidad de su modelo.

¿Qué tipo de análisis deseas hacer?

Si su modelo exige que todos los datos se lleven primero a la memoria, entonces su modelo no debería ser complejo porque si los datos intermedios son grandes, el código se romperá. Y si piensa escribirlo en el disco, se enfrentará a un retraso adicional porque la lectura / escritura del disco es lenta en comparación con la RAM.

Conclusión

Definitivamente, puede usar Python en el espacio de Big Data (Definitivamente, dado que las personas están probando con R, ¿por qué no Python?) Pero primero debe conocer sus datos y requisitos comerciales. Puede haber mejores herramientas disponibles para lo mismo y recuerde siempre:

Sus herramientas no deberían determinar cómo responde las preguntas. Sus preguntas deben determinar qué herramientas utiliza.

Ankit
fuente
8

Python tiene algunas herramientas muy buenas para trabajar con big data:

numpy

Las matrices mapeadas en memoria de Numpy le permiten acceder a un archivo guardado en el disco como si fuera una matriz. Solo las partes de la matriz con las que está trabajando activamente deben cargarse en la memoria. Se puede usar más o menos igual que una matriz ordinaria.

h5py y pytables

Estas dos bibliotecas proporcionan acceso a archivos HDF5. Estos archivos permiten el acceso a solo parte de los datos. Además, gracias a las bibliotecas subyacentes utilizadas para acceder a los datos, se pueden realizar muchas operaciones matemáticas y otras manipulaciones de los datos sin cargarlos en una estructura de datos de Python. Son posibles archivos masivos y altamente estructurados, mucho más grandes que 5 TB. También permite una compresión perfecta y sin pérdidas.

bases de datos

Existen varios tipos de bases de datos que le permiten almacenar grandes conjuntos de datos y cargar solo las partes que necesita. Muchas bases de datos le permiten realizar manipulaciones sin cargar los datos en una estructura de datos de Python.

pandas

Esto permite un acceso de alto nivel a varios tipos de datos, incluidos datos HDF5, archivos csv, bases de datos e incluso sitios web. Para big data, proporciona envoltorios alrededor del acceso a archivos HDF5 que facilita el análisis en conjuntos de big data.

mpi4py

Esta es una herramienta para ejecutar su código python de forma distribuida en múltiples procesadores o incluso en múltiples computadoras. Esto le permite trabajar en partes de sus datos simultáneamente.

dask

Proporciona una versión de la matriz numpy normal que admite muchas de las operaciones numpy normales de una manera multinúcleo que puede funcionar en datos demasiado grandes para caber en la memoria.

resplandor

Una herramienta diseñada específicamente para big data. Básicamente es un contenedor alrededor de las bibliotecas anteriores, que proporciona interfaces consistentes para una variedad de métodos diferentes de almacenamiento de grandes cantidades de datos (como HDF5 o bases de datos) y herramientas para facilitar la manipulación, realizar operaciones matemáticas y analizar datos que es demasiado grande para caber en la memoria.

El gato Negro
fuente
4

Absolutamente. Cuando trabajas con datos a esa escala, es común usar un marco de Big Data, en cuyo caso Python o cualquier idioma que estés usando es simplemente una interfaz. Consulte, por ejemplo, la Guía de programación de Python de Spark . ¿Qué tipo de datos tiene y qué quiere hacer con ellos?

Emre
fuente
3

Para manejar esa cantidad de datos, el lenguaje de programación no es la principal preocupación, pero el marco de programación sí lo es. Los marcos como MapReduce o Spark tienen enlaces a muchos idiomas, incluido Python. Estos marcos ciertamente tienen muchos paquetes listos para usar para tareas de análisis de datos. Pero al final todo llega a su requerimiento, es decir, ¿cuál es su tarea? Las personas tienen diferentes definiciones de tareas de análisis de datos, algunas de ellas pueden resolverse fácilmente con bases de datos relacionales. En ese caso, SQL es mucho mejor que todas las otras alternativas.

lgylym
fuente
2

Creo que el lenguaje en sí tiene poco que ver con las capacidades de rendimiento, cuando se trata de datos de gran tamaño. Lo que importa es:

  • ¿Qué tan grandes son realmente los datos?
  • ¿Qué procesamiento vas a realizar en él?
  • ¿Qué hardware vas a usar?
  • ¿Cuáles son las bibliotecas específicas que planea usar?

De todos modos, Python está bien adoptado en las comunidades de ciencia de datos.

Mateva
fuente
2

He estado usando Anaconda Python 3.4 y Pandas para buscar en la base de datos de 10M filas para que coincida con 20K de credenciales de inicio de sesión. Toma alrededor de un minuto. Los pandas internos hacen un gran uso de la memoria. Dicho esto, los datos realmente grandes requieren una arquitectura de procesamiento adaptada al problema. Pandas es solo el pegamento (lógica) en esta ecuación, y otras herramientas también pueden hacer esto. R, Scala, Haskell, SAS, etc. pueden replicar parte de la lógica, tal vez lo suficiente como para responder preguntas más rápido. Pero Python es una buena (¿la mejor?) Herramienta de uso general. Puede ejecutar el código R en python, así como en la mayoría de los otros idiomas. Aunque son interpretativas, existen técnicas y herramientas de alto rendimiento como pypy que pueden hacer que Python se ejecute casi tan rápido como las herramientas de referencia con solo un poco más de esfuerzo. Y Python tiene muchas bibliotecas que hacen casi todo, vea la lista anterior.

Si está preguntando si debería aprender y usar python, mi respuesta es sí. Los artículos indican que python se usa más que R entre las personas que usan ambos. Pero pocos problemas de ciencia de datos se resuelven con una sola herramienta. Puede convertirse en su herramienta de acceso, pero es solo eso: una herramienta. Y así como ninguna persona en su sano juicio construye una casa con solo un martillo, ningún científico de datos en su sano juicio usa solo una herramienta.

Harvey
fuente
0

Es curioso cómo las personas mezclan big data con ciencia de datos e inteligencia de negocios.

Primero, big data significa "muchos datos", tanta información que no cabe en una base de datos convencional. Sin embargo, a veces los grandes datos no son ni siquiera la información de "valor" adecuada sino documentos, imágenes, etc.

Entonces, para procesar grandes datos, NECESITAMOS VELOCIDAD. Python está fuera de la liga, por lo que R. Sin embargo, si la tarea es tan fácil como tomar un CSV e insertarlo en una base de datos, entonces es ETL, no necesitamos programación para hacerlo.

Y cuando la información se reduce, entonces podríamos aplicar python, r o lo que desee. Incluso Excel. Sin embargo, en esta etapa, Big Data ya no es grande sino datos convencionales.

En mi humilde opinión, Java es más adecuado para Big Data (para toda la cadena), pero las personas toman Python por defecto por alguna razón poco práctica.

magallanes
fuente