¿Por qué Apache-Spark – Python es tan lento a nivel local en comparación con los pandas?

Una chispa novato aquí. Recientemente comencé a jugar con chispa en mi máquina local en dos núcleos usando el comando.

pyspark –master local [2]

Tengo un archivo de texto de 393 Mb que tiene casi un millón de filas. Quería realizar alguna operación de manipulación de datos. Estoy usando las funciones Dataframe integradas de Pyspark para realizar operaciones simples como groupBy, sum, max. stddev.

Sin embargo, cuando hago exactamente las mismas operaciones en pandas en el mismo conjunto de datos, los pandas parecen derrotar a pyspark por un gran margen en términos de latencia.

Me preguntaba cuál podría ser una posible razón para esto. Tengo un par de pensamientos.

  1. ¿Las funciones integradas hacen el proceso de serialización / des-serialización de manera ineficiente? Si es así, ¿cuáles son las alternativas para ellos?
  2. ¿Es el conjunto de datos demasiado pequeño para que no pueda superar el costo general de la JVM subyacente en la que se ejecuta la chispa?

Gracias por mirar. Muy apreciado

Porque:

  • Apache Spark es un marco complejo diseñado para distribuir el procesamiento en cientos de nodos, al tiempo que garantiza la corrección y la tolerancia a fallos. Cada una de estas propiedades tiene un costo significativo.
  • Debido a que el procesamiento puramente en la memoria en el núcleo (Pandas) es mucho más rápido que el E / S de disco y red (incluso local) (Spark).
  • Debido a que el paralelismo (y el procesamiento distribuido) agregan una sobrecarga significativa, e incluso con una carga de trabajo óptima (vergonzosamente paralela) no garantiza ninguna mejora de rendimiento.
  • Porque el modo local no está diseñado para el rendimiento. Se utiliza para la prueba.
  • Por último, pero no menos importante, 2 núcleos que se ejecutan en 393MB no son suficientes para ver mejoras en el rendimiento, y un solo nodo no ofrece ninguna oportunidad para la distribución
  • También Spark: número de rendimiento incoherente en la escala de número de núcleos , ¿por qué pyspark es mucho más lento para encontrar el máximo de una columna? , ¿Por qué mi Spark funciona más lento que Python puro? Comparación de rendimiento

Puedes seguir así por mucho tiempo …