¿En qué situación puedo usar Dask en lugar de Apache Spark? [cerrado]

81

Actualmente estoy usando Pandas y Spark para el análisis de datos. Encontré que Dask proporciona una matriz NumPy paralelizada y Pandas DataFrame.

Pandas es fácil e intuitivo para realizar análisis de datos en Python. Pero encuentro dificultades para manejar múltiples marcos de datos más grandes en Pandas debido a la memoria limitada del sistema.

Respuesta simple:

Apache Spark es un marco todo incluido que combina computación distribuida, consultas SQL, aprendizaje automático y más que se ejecuta en la JVM y comúnmente se implementa conjuntamente con otros marcos de Big Data como Hadoop. ... Generalmente Dask es más pequeño y liviano que Spark.

Llego a conocer los detalles a continuación de http://dask.pydata.org/en/latest/spark.html

  • Dask es de peso ligero
  • Dask se usa normalmente en una sola máquina, pero también funciona bien en un clúster distribuido.
  • Dask to proporciona matrices paralelas, marcos de datos, aprendizaje automático y algoritmos personalizados
  • Dask tiene una ventaja para los usuarios de Python porque es en sí misma una biblioteca de Python, por lo que la serialización y la depuración cuando las cosas van mal se realizan sin problemas.
  • Dask renuncia a la comprensión de alto nivel para permitir a los usuarios expresar algoritmos paralelos más complejos.
  • Dask es más liviano y más fácil de integrar en el código y el hardware existentes.
  • Si desea un solo proyecto que lo haga todo y ya está en hardware de Big Data, Spark es una apuesta segura
  • Spark se usa generalmente en clústeres de tamaño pequeño a mediano, pero también funciona bien en una sola máquina.

Entiendo más cosas sobre Dask desde el siguiente enlace https://www.continuum.io/blog/developer-blog/high-performance-hadoop-anaconda-and-dask-your-cluster

  • Si tiene problemas de memoria, limitaciones de almacenamiento o límites de CPU en una sola máquina cuando usa Pandas, NumPy u otros cálculos con Python, Dask puede ayudarlo a escalar todos los núcleos en una sola máquina o escalar horizontalmente en todos los núcleos y la memoria de su clúster.
  • Dask funciona bien en una sola máquina para hacer uso de todos los núcleos de su computadora portátil y procesar datos más grandes que la memoria
  • escala de manera flexible y elástica en clústeres con cientos de nodos.
  • Dask funciona de forma nativa desde Python con datos en diferentes formatos y sistemas de almacenamiento, incluido el sistema de archivos distribuido Hadoop (HDFS) y Amazon S3. Anaconda y Dask pueden trabajar con su distribución de Hadoop empresarial existente, incluyendo Cloudera CDH y Hortonworks HDP.

http://dask.pydata.org/en/latest/dataframe-overview.html

Limitaciones

Dask.DataFrame no implementa toda la interfaz de Pandas. Los usuarios que esperan esto se sentirán decepcionados. Notablemente, dask.dataframe tiene las siguientes limitaciones:

  1. Establecer un nuevo índice a partir de una columna sin clasificar es costoso
  2. Muchas operaciones, como groupby-apply y join en columnas sin clasificar, requieren configurar el índice, que como se mencionó anteriormente, es costoso
  3. La API de Pandas es muy grande. Dask.dataframe no intenta implementar muchas características de pandas o cualquiera de las estructuras de datos más exóticas como NDFrames

Gracias a los desarrolladores de Dask. Parece una tecnología muy prometedora.

En general, puedo entender que Dask es más simple de usar que Spark. Dask es tan flexible como Pandas con más poder para computar con más CPU en paralelo.

Entiendo todos los hechos anteriores sobre Dask.

Entonces, ¿aproximadamente cuánta cantidad de datos (en terabytes) se pueden procesar con Dask?

Hariprasad
fuente
Esta pregunta es muy amplia
MRocklin
1
Tener en cuenta el tamaño de los datos por sí solo no es suficiente para elegir las mejores herramientas / estrategias paralelas. Se debe tener en cuenta cómo el algoritmo maneja los datos. No he probado ambos, pero probablemente probaré dask en una sola máquina, como una computadora portátil o una PC. Y considerará implementar para activar cuando sea necesario ejecutar con un clúster de múltiples nodos. Dado que parece muy complicado aprender y ajustar cada componente con el marco que viene con Spark.
ReneWang
Puede encontrar una respuesta aquí: medium.com/datadriveninvestor/…
tom

Respuestas:

40

es posible que desee leer la comparación de Dask con Apache Spark

Apache Spark es un marco todo incluido que combina computación distribuida, consultas SQL, aprendizaje automático y más que se ejecuta en la JVM y comúnmente se implementa conjuntamente con otros marcos de Big Data como Hadoop. Originalmente se optimizó para la ingesta de datos masivos y las consultas comunes en la ingeniería de datos y el análisis empresarial, pero desde entonces se ha ampliado. Spark se usa generalmente en clústeres de tamaño pequeño a mediano, pero también funciona bien en una sola máquina.

Dask es una biblioteca de programación paralela que se combina con el ecosistema numérico de Python para proporcionar matrices paralelas, marcos de datos, aprendizaje automático y algoritmos personalizados. Está basado en Python y la pila fundamental de C / Fortran. Dask se diseñó originalmente para complementar otras bibliotecas con paralelismo, en particular para la computación numérica y el análisis avanzado, pero desde entonces se ha ampliado. Dask se usa normalmente en una sola máquina, pero también funciona bien en un clúster distribuido.

Generalmente, Dask es más pequeño y liviano que Spark. Esto significa que tiene menos funciones y, en cambio, está diseñado para usarse junto con otras bibliotecas, particularmente aquellas en el ecosistema numérico de Python.

MaxU
fuente