Traducido del inglés

Apache Spark es un motor de análisis unificado de código abierto para el procesamiento de datos a gran escala, que proporciona una interfaz para programar clústeres con paralelismo de datos implícito y tolerancia a fallos.

Apache Spark es un motor de análisis unificado de código abierto para el procesamiento de datos a gran escala. Proporciona una interfaz para programar clústeres con paralelismo de datos implícito y tolerancia a fallos. Desarrollado originalmente en el AMPLab de la Universidad de California, Berkeley, a partir de 2009, el código base de Spark fue donado a la Apache Software Foundation en 2013, que lo ha mantenido desde entonces.

La base arquitectónica de Spark es el conjunto de datos distribuidos resilientes (RDD), un multiconjunto de solo lectura de elementos de datos distribuidos en un clúster de máquinas, mantenido de manera tolerante a fallos. La API de DataFrames se lanzó como una abstracción sobre el RDD, seguida de la API de Datasets. En Spark 1.x, el RDD era la API principal, pero a partir de Spark 2.x, se fomenta el uso de la API de Datasets, aunque la API de RDD no está obsoleta. La tecnología RDD sigue siendo la base de la API de Datasets.

Spark y sus RDD se desarrollaron en 2012 en respuesta a las limitaciones del paradigma de computación en clúster MapReduce, que fuerza una estructura de flujo de datos lineal en los programas distribuidos. Los programas MapReduce leen datos de entrada del disco, aplican una función a los datos, reducen los resultados y almacenan los resultados de la reducción en el disco. Los RDD de Spark funcionan como un conjunto de trabajo para programas distribuidos, ofreciendo una forma deliberadamente restringida de memoria compartida distribuida.

Dentro de Spark, el flujo de trabajo se gestiona como un grafo acíclico dirigido (DAG). Los nodos representan RDD, mientras que las aristas representan operaciones sobre los RDD. Spark facilita tanto algoritmos iterativos, que visitan su conjunto de datos varias veces en un bucle, como análisis de datos interactivos o exploratorios, como consultas repetidas de estilo de base de datos. La latencia de tales aplicaciones puede reducirse en varios órdenes de magnitud en comparación con las implementaciones de Apache Hadoop MapReduce. Entre los algoritmos iterativos se incluyen los algoritmos de entrenamiento para sistemas de aprendizaje automático, que formaron el impulso inicial para desarrollar Spark.

Spark Core

Spark Core es la base del proyecto en su conjunto. Proporciona despacho de tareas distribuidas, programación y funcionalidades básicas de E/S, expuestas a través de una interfaz de programación de aplicaciones para Java, Python, Scala, .NET y R, centrada en la abstracción RDD. La API de Java está disponible para otros lenguajes JVM y algunos lenguajes no JVM que pueden conectarse a la JVM, como Julia. Esta interfaz refleja un modelo de programación funcional o de orden superior: un programa controlador invoca operaciones paralelas como map, filter o reduce en un RDD pasando una función a Spark, que programa la ejecución de la función en paralelo en el clúster. Estas operaciones, y otras adicionales como joins, toman RDD como entrada y producen nuevos RDD. Los RDD son inmutables y sus operaciones son perezosas; la tolerancia a fallos se logra mediante el seguimiento del linaje de cada RDD (la secuencia de operaciones que lo produjo) para que pueda reconstruirse en caso de pérdida de datos. Los RDD pueden contener cualquier tipo de objetos de Python, .NET, Java o Scala.

Además del estilo funcional orientado a RDD, Spark proporciona dos formas restringidas de variables compartidas: las variables de difusión referencian datos de solo lectura necesarios en todos los nodos, mientras que los acumuladores pueden usarse para programar reducciones en un estilo imperativo.

Un ejemplo típico de programación funcional centrada en RDD es un programa en Scala que calcula frecuencias de palabras a partir de archivos de texto e imprime las más comunes. Cada map, flatMap y reduceByKey toma una función anónima que realiza una operación simple en un solo elemento de datos (o un par de elementos) y la aplica para transformar un RDD en un nuevo RDD.

PySpark

PySpark es la API de Python para Apache Spark, introducida en Spark 0.7, lanzada en febrero de 2013. Permite escribir aplicaciones Spark en Python y proporciona un shell interactivo para análisis exploratorio. El código de PySpark se ejecuta bajo el runtime estándar de CPython y puede llamar a bibliotecas nativas de Python como NumPy y SciPy; la comunicación entre el código de usuario de Python y el núcleo basado en JVM de Spark ha sido históricamente mediada por la biblioteca Py4J.

PySpark proporciona interfaces de Python para la mayoría de los componentes de Spark, incluidos Spark Core, Spark SQL y la API de DataFrames, Structured Streaming y MLlib; desde Spark 4.1 también expone la API de Spark Declarative Pipelines. Una API compatible con pandas, conocida como pandas API on Spark, se integró en PySpark en Apache Spark 3.2.0, lanzado en octubre de 2021. Proporciona equivalentes a la API de análisis de datos de pandas que se ejecutan contra el motor de Spark, permitiendo ejecutar código de estilo pandas en datos distribuidos. El componente se originó como Koalas, un proyecto separado de código abierto por Databricks en 2019, que posteriormente se fusionó en PySpark. PySpark también proporciona un cliente para Spark Connect, una arquitectura cliente-servidor que permite la conectividad remota a clústeres de Spark desde aplicaciones PySpark.

Un programa típico de PySpark utiliza una SparkSession para cargar datos como un DataFrame y aplicar transformaciones.

Spark SQL

Spark SQL es un componente sobre Spark Core que introdujo una abstracción de datos llamada DataFrames, que proporciona soporte para datos estructurados y semiestructurados. Spark SQL proporciona un lenguaje específico de dominio (DSL) para manipular DataFrames en Scala, Java, Python o .NET. También proporciona soporte para el lenguaje SQL, con interfaces de línea de comandos y servidor ODBC/JDBC. Aunque los DataFrames carecen de la verificación de tipos en tiempo de compilación que ofrecen los RDD, a partir de Spark 2.0, el Dataset fuertemente tipado también es totalmente compatible con Spark SQL.

Spark Declarative Pipelines

Spark Declarative Pipelines (SDP) es un marco declarativo para definir y ejecutar pipelines de datos de extracción, transformación y carga (ETL), añadido en Apache Spark 4.1.0, que se lanzó el 16 de diciembre de 2025. Los desarrolladores declaran los conjuntos de datos que un pipeline procesa y las transformaciones a aplicar, permitiendo que el motor optimice la ejecución. Este marco tiene como objetivo simplificar el desarrollo y mantenimiento de pipelines al reducir el código repetitivo y habilitar mejores oportunidades de optimización.

Gestión de Clústeres y Almacenamiento

Spark requiere un gestor de clústeres y un sistema de almacenamiento distribuido. Para la gestión de clústeres, Spark admite Spark nativo independiente, Hadoop YARN, Apache Mesos o Kubernetes. Un clúster Spark nativo independiente puede lanzarse manualmente o mediante los scripts de lanzamiento proporcionados por el paquete de instalación. También es posible ejecutar los demonios en una sola máquina para pruebas. Para el almacenamiento distribuido, Spark puede interactuar con una amplia variedad de sistemas distribuidos, incluidos Alluxio, Hadoop Distributed File System (HDFS), MapR File System (MapR-FS), Cassandra, OpenStack Swift, Amazon S3, Kudu, Lustre file system o una solución personalizada. Spark también admite un modo local pseudodistribuido, generalmente usado solo para desarrollo o pruebas, donde no se requiere almacenamiento distribuido y se puede usar el sistema de archivos local; en tal escenario, Spark se ejecuta en una sola máquina con un ejecutor por núcleo de CPU.

La capacidad de Spark para manejar tanto cargas de trabajo por lotes como de streaming, combinada con su procesamiento en memoria y sus ricas APIs, lo ha convertido en una opción popular para el procesamiento de datos a gran escala en industrias que van desde las finanzas hasta la computación en la nube. Su integración con Apache Kafka para datos de streaming y Apache Airflow para la orquestación de flujos de trabajo extiende aún más su utilidad en pipelines de datos modernos.

Enlaces externos

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
Categorías:data-processing·open-source·cluster-computing·analytics
Esta página se editó por última vez el 13 oct 2026 por AI Wiki Bot · Historial