La mejor respuesta
Le sugiero que lea versiones anteriores del código de Spark.
Considere la versión 0.5 lanzado en 2012 apache / spark En ese momento, Spark solo tenía alrededor de 70 archivos de código fuente y todos estos archivos eran pequeños. Eche un vistazo al código fuente de RDD aquí: apache / spark . Todo es tan simple y conciso.
Además, tenga en cuenta que la arquitectura de Spark no ha t cambió drásticamente desde entonces. Los desarrolladores acaban de agregar mucho manejo de errores, optimizaciones e integración con tecnologías externas como Yarn o Kafka.
Cuando comprenda cómo funcionaba Spark en 2012, no sería un problema comprender cómo funciona Spark hoy.
Además, le sugiero que lea estas notas: JerryLead / SparkInternals . Proporcionan una descripción general de la arquitectura interna de Spark.
Respuesta
Para aprovechar la respuesta de Noam Ben-Ami: SI eres un usuario de extremo a extremo, Spark puede ser bastante exhaustivo y difícil de aprender.
Incluso si conoces Bash, Python y SQL, eso es solo la punta del iceberg del uso de Spark. Si va «de un extremo a otro» Spark frente a un analista de scripting de Python / SQL, tiene muchos componentes que son en sí mismos grandes temas para aprender.
Claro, puede usar Spark localmente (su computadora portátil) y sin Hadoop, pero en el «mundo real» no usará Spark de esa manera. Es bueno aprender algo de la sintaxis, pero no se equivoque, nadie lo contratará para hacer «Spark» en ese contexto (* juego de palabras intencionado).
La razón principal para usar Spark es el rendimiento y está sentado sobre un sistema de archivos distribuido, también conocido como «Big Data». Eso significa que cuando escribe código para sus trabajos de Spark, comprende cosas como particiones, nodos, serialización, JVM, vcores, ejecutores, memoria, memoria y disco, barajas, archivos comprimidos, formatos de columnas (parquet) y similares a lo largo del forma de mover datos desde, por ejemplo, S3 a través de RDD, DataFrames, DataSets (solo Java / Scala) y Spark SQL a su conjunto de datos final.
Para mí, esto es muy parecido a cuando alguien diría que sabe » Excel ”y luego les pregunta si pueden escribir una macro básica desde cero y obtienen ese aspecto de ciervo en los faros.
Una posible aventura en Spark incluiría:
- Construyendo su clúster de Hadoop (nodos, memoria, instancias EC2, etc.)
- Configuración de YARN (nodos, núcleos, instancias, ejecutores, administración de memoria, controladores, memoria general, transmisión, en memoria y en administración de disco, etc.): cualquiera de estos puede bloquear / eliminar sus trabajos y no da un solo paso más con cargas de datos incluso triviales si alguno de estos no funciona. llévese sus datos.
- Documentación de Spark RDDs
- Documentación de Spark DataFrames
- Documentación de Spark SQL
- Inevitablemente, estará escribiendo código en # 3–5 que expondrá los problemas de # 2.
- En este punto, probablemente estará depurando como mínimo el código Java y, si usa Python, los errores de puerta de enlace de py4J a problemas de tipo de datos con Python y objetos de datos de transmisión.
Mucha gente puede escribir funciones / métodos contra RDD, DataFrames y Spark SQL en solo minutos y si tienen algo de experiencia con Python y SQL, tal vez incluso engulle RDD, DataFrames y documentación SQL en unos pocos días, pero cuando su trabajo de Spark se mata por una transmisión, un ejecutor, una tarea o un error de memoria, nada de eso importará. Te vas a poner el traje de neopreno Spark y te sumerges profundamente en el vientre de Spark [Java].