Pregunta

He leído en este post es el lenguaje adecuado para R big Data que grandes volúmenes de datos constituye 5TB, y mientras lo hace un buen trabajo de proporcionar información acerca de la viabilidad de trabajar con este tipo de datos en R que proporciona muy poca información sobre Python. Me preguntaba si Python puede trabajar con esta cantidad de datos también.

¿Fue útil?

Solución

Para aclarar, siento que las referencias pregunta original por OP probablemente no sea la mejor para un formato de tipo SO, pero sin duda representará python en este caso particular.

Permítanme comenzar diciendo que, independientemente de su tamaño de datos, python no debe ser su factor limitante. De hecho, sólo hay un par de cuestiones principales que usted va a ejecutar en tratar con grandes conjuntos de datos:

  • La lectura de datos en la memoria - Este es por lejos el problema más común que enfrentan en el mundo de grandes volúmenes de datos. Básicamente, no se puede leer en más datos de los que dispone de la memoria (RAM) para. La mejor manera de solucionar este problema es haciendo que las operaciones atómicas sobre sus datos en lugar de tratar de leer todo en una sola vez.
  • Almacenamiento de datos - Esto es en realidad más que otra forma de la edición anterior, en el momento de obtener hasta aproximadamente 1TB, comienza a tener que buscar otro lugar para su almacenamiento. AWS S3 es el recurso más común, y python tiene la biblioteca boto fantástico para facilitar el líder, con grandes trozos de datos.
  • Red de latencia - Mover datos entre los diferentes servicios alrededor va a ser el cuello de botella. No hay una gran cantidad que se puede hacer para solucionar este problema, aparte de tratar de recoger recursos de co-localizados y enchufarlo a la pared.

Otros consejos

Hay dos cosas que hay que entender cuando se trata de datos grandes -

¿Qué es Big data?

podría estar al tanto de la famosa V de datos de grandes - Volumen, Velocidad, variedad ... Por lo tanto, Python puede no ser adecuado para todos. Y se va con todas las herramientas de las ciencias datos disponibles. Usted necesita saber qué herramienta es buena para qué propósito.

Si se trata de grandes volúmenes de datos:

  • cerdo / colmena / tiburón - limpieza de datos y el trabajo de ETL
  • Hadoop / Spark - Distributed computación paralela
  • Mahout / ML-Lib - Machine Learning

Ahora, puede utilizar R / Python en etapas intermedias, pero se dará cuenta de que se conviertan en cuello de botella en todo su proceso.

Si se trata de la velocidad de los datos:

  • Kafka / Storm - Alto rendimiento del sistema

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

¿Qué tipo de análisis que desea hacer?

Si su modelo requiere todos los datos que se presentó por primera vez en la memoria, entonces su modelo no debe ser compleja, porque si el intermedio de datos es grande, entonces el código se romperá. Y si se piensa en la escritura en el disco después que se enfrentará retardo adicional porque el disco de lectura / escritura es lenta en comparación con la memoria RAM.

Conclusión

definitivamente puede usar Python en el espacio de datos grande (Definitivamente, ya que la gente está tratando con R, por qué no Python), sino conocer sus datos y requerimientos de negocio en primer lugar. Puede haber mejores herramientas disponibles para el mismo y recordar siempre:

Sus herramientas no deben determinar la forma de contestar las preguntas. Sus preguntas deben determinar qué herramientas que utiliza.

Python tiene algunas muy buenas herramientas para trabajar con grandes volúmenes de datos:

numpy

matrices memmory-mapeado de numpy le permiten acceder a un archivo guardado en el disco como si se tratara de una matriz. Sólo las partes de la matriz que está trabajando activamente con necesidad de ser cargados en la memoria. Se puede utilizar más o menos lo mismo que una matriz común.

h5py y PyTables

Estas dos bibliotecas proporcionan acceso a los archivos HDF5. Estos archivos permiten el acceso a sólo una parte de los datos. Además, gracias a las bibliotecas de base utilizados para acceder a los datos, muchas operaciones matemáticas y otras manipulaciones de los datos se puede hacer sin carga en una estructura de datos pitón. Masivos, archivos altamente estructurados son posibles, mucho más grande que 5 TB. También permite sin fisuras, la compresión sin pérdidas.

bases de datos

Hay varios tipos de bases de datos que le permiten almacenar grandes conjuntos de datos y cargar sólo las piezas que necesita. Muchas bases de datos le permiten hacer manipulaciones sin cargar los datos en una estructura de datos de pitón en absoluto.

pandas

Esto permite el acceso de alto nivel a varios tipos de datos, incluidos los HDF5, csv, bases de datos, sitios web incluso. Para grandes volúmenes de datos, que proporciona envolturas alrededor de acceso a archivos HDF5 que hace que sea más fácil hacer el análisis de grandes conjuntos de datos.

mpi4py

Esta es una herramienta para ejecutar su código Python de forma distribuida entre varios procesadores o incluso varios equipos. Esto le permite trabajar en partes de sus datos al mismo tiempo.

dask

Se proporciona una versión de la matriz numpy normal que apoya muchas de las operaciones numpy normales de una manera de múltiples núcleos que pueden trabajar en los datos demasiado grande para caber en la memoria.

incendio

herramienta

Un diseñada específicamente para grandes volúmenes de datos. Se trata básicamente de una envoltura alrededor de las bibliotecas anteriores, proporcionando interfaces consistentes a una variedad de diferentes métodos de almacenar grandes cantidades de datos (como HDF5 o bases de datos) y las herramientas para que sea fácil de manipular, hacer operaciones matemáticas en, y analizar los datos que es demasiado grande para caber en la memoria.

Por supuesto. Cuando se trabaja con los datos a esa escala es común el uso de un marco de grandes volúmenes de datos, en cuyo caso pitón o cualquier otro idioma que está utilizando no es más que una interfaz. Véase, por ejemplo de chispa guía de programación Python . ¿Qué tipo de datos tiene usted y qué es lo que quiere hacer con ella?

Para manejar tal cantidad de datos, la programación de la lengua no es la principal preocupación, pero el marco de programación es. Marcos como MapReduce o Spark tienen enlaces con muchos idiomas, incluyendo Python. Estos marcos ciertamente tienen muchos paquetes listos para su uso para tareas de análisis de datos. Pero al final todo viene a su requerimiento, es decir, ¿cuál es su tarea? Las personas tienen diferentes definiciones de las tareas de análisis de datos, algunos de ellos se pueden resolver fácilmente con bases de datos relacionales. En ese caso, SQL es mucho mejor que todas las otras alternativas.

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 grande es el hecho de datos
  • ¿Qué procesamiento se va a realizar en la misma
  • ¿Qué hardware se va a usar
  • ¿Cuáles son las bibliotecas específicas que planea usar

De todos modos, Python es bien adoptada en las comunidades científicas de datos.

He estado usando Anaconda Python 3.4 y pandas de la base de datos para buscar la fila 10M para que coincida con 20K de las credenciales de inicio de sesión. Tarda aproximadamente un minuto. Los detalles internos pandas hacen un gran uso de la memoria. Dicho esto, los datos verdaderamente grande requiere una arquitectura de procesamiento adaptada al problema. Pandas es sólo el pegamento (lógica) en esta ecuación, y otras herramientas puede hacer esto también. R, Scala, Haskell, SAS, etc. puede replicar parte de la lógica - quizá sólo lo suficiente para responder a las preguntas más rápido. Pero hace un buen pitón (mejor?) Herramienta de propósito general. Puede ejecutar código R en Python, así como la mayoría de otros idiomas. Aunque interpretativo, existen técnicas de alto rendimiento y herramientas como PyPy que puede hacer carrera pitón casi tan rápido como herramientas de referencia con sólo un poco más de esfuerzo. Y Python tiene muchas bibliotecas que hacen casi todo - véase más arriba de la lista .

Si se está preguntando si debe aprender y usar pitón, mi respuesta es sí los artículos indican que pitón se utiliza más de R entre las personas que usan ambos. Sin embargo, algunos problemas de ciencia de datos se resuelven con una sola herramienta. Puede llegar a ser su salida a la herramienta, pero es sólo eso - una herramienta. Y al igual que ninguna persona sana construye una casa con sólo un martillo, sin cuerdo datos Científico usa una sola herramienta.

Es curioso cómo la gente se mezcla con la ciencia de datos grandes de datos e inteligencia empresarial.

En primer lugar, los grandes medios de datos "una gran cantidad de datos", tanta información que no encaja en una base de datos convencional. Sin embargo, los datos a veces grande no es aún adecuada información "valor", pero los documentos, imágenes y así sucesivamente.

Por lo tanto, para procesar grandes volúmenes de datos, necesitamos VELOCIDAD. Python es fuera de la liga, por lo que R. Sin embargo, si la tarea es tan fácil como tomar un CSV y se insertan en una base de datos, entonces es ETL, que no necesita programación para hacer eso.

Y cuando la información se reduce, entonces podríamos aplicar pitón, R o lo que usted desea. Incluso Excel. Sin embargo, en esta etapa, grandes volúmenes de datos no es grande, pero más convencional de datos.

En mi humilde opinión, Java es más adecuado para grandes volúmenes de datos (para toda la cadena), pero la gente toma Python por defecto por alguna razón poco práctico.

Licenciado bajo: CC-BY-SA con atribución
scroll top