Resumen de Fundamentos de Apache Spark y Big Data

Fundamentos de Apache Spark y Big Data: Guía Completa para Estudiantes

Introducción

Apache Spark es un motor distribuido de procesamiento de datos diseñado para ejecutar cargas de trabajo a gran escala con alta velocidad y tolerancia a fallas. En este material aprenderás conceptos clave de Spark SQL, cómo crear y manipular RDD y DataFrames, cómo instalar y ejecutar Spark en Google Colab, y ejemplos prácticos de lectura y escritura de archivos como CSV y Parquet.

Definición: Un RDD (Resilient Distributed Dataset) es una colección distribuida de elementos que puede ser procesada en paralelo y reconstruida a partir de sus dependencias.

1. Arquitectura y componentes principales de Spark

Componentes principales

  • Spark Core: Motor base que gestiona tareas, memoria, programación y tolerancia a fallas.
  • Spark SQL: Paquete para trabajar con datos estructurados y ejecutar consultas SQL junto con operaciones programáticas.
  • Spark Streaming: Procesa datos en tiempo real (streams) con tolerancia a fallas similar a Spark Core.
  • MLlib: Biblioteca de aprendizaje automático con algoritmos de clasificación, regresión y clustering.
  • GraphX: Biblioteca para procesamiento de grafos y algoritmos como PageRank.
ComponenteUso principalEjemplo de tarea
Spark CoreGestión de ejecución y memoriaCoordinación de tareas en clúster
Spark SQLDatos estructurados y consultasConsultas SQL sobre tablas Parquet
Spark StreamingProcesamiento de streamsIngesta de eventos en tiempo real
MLlibModelado predictivoClasificación y clustering
GraphXProcesamiento de grafosCálculo de PageRank
💡 ¿Sabías que?Did you know Spark permite combinar diferentes tipos de procesamiento (por ejemplo consultas interactivas y transmisión) dentro del mismo motor sin herramientas adicionales?

Usuarios típicos

  • Científicos de datos: realizan análisis ad hoc y necesitan respuestas rápidas mediante APIs accesibles (Python, Scala, R, Java, SQL).
  • Ingenieros de datos: desarrollan pipelines productivos, supervisan y ajustan aplicaciones distribuidas.

2. RDD: conceptos y creación

Características claves

  • Dependencias: descripción de cómo se construye un RDD para poder reconstruirlo si es necesario.
  • Particiones: división física para paralelizar trabajo entre ejecutores.
  • Función de cálculo: produce los iteradores con los datos que contiene el RDD.

Definición: Partición es la unidad de paralelismo en Spark; un RDD se divide en una o más particiones que se procesan en paralelo.

Formas de crear RDD

  1. RDD vacío:
    • rdd_vacio = sc.emptyRDD()
    • rdd_vacio3 = sc.parallelize([], 3) crea un RDD vacío con 3 particiones
  2. Desde una lista:
    • rdd = sc.parallelize([1,2,3,4,5]) y luego rdd.collect() para ver el contenido
  3. Desde un archivo de texto:
    • rdd_texto = sc.textFile('./rdd_source.txt') (cada línea = un registro)
    • rdd_text_completo = sc.wholeTextFiles('./rdd_source.txt') (archivo completo como un solo registro)
  4. A partir de otro RDD (transformaciones):
    • rdd_suma = rdd.map(lambda x: x + 1)
  5. Desde un DataFrame:
    • df = Spark.createDataFrame([(1,'Jose'),(2,'Juan')], ['id','Nombre'])
    • rdd_from_df = df.rdd
💡 ¿Sabías que?Fun fact: Spark guarda metadatos de cómo construir RDDs usando su grafo de dependencias, lo que le permite recomputar particiones en caso de fallos sin replicar todos los datos.

3. Spark Session y entorno en Google Colab

¿Qué es Google Colab?

Google Colab es un servicio gratuito basado en Jupyter Notebook que permite ejecutar código Python en la nube, ideal para experimentar con Spark sin instalar localmente.

Pasos resumidos para usar Spark en Colab

  1. Instalar Java 8:
    • !apt-get install openjdk-8-jdk-headless -qq
  2. Descargar y descomprimir Spark (ejemplo con Spark 3.2.3):
    • !wget -q https://archive.apache.org/dist/Spark/Spark-3.2.3/Spark-3.2.3-bin-hadoop3.2.tgz
    • !tar xf Spark-3.2.3-bin-hadoop3.2.tgz
  3. Establecer variables de entorno en Python:
Regístrate para el resumen completo
TarjetasTest de conocimientosResumenPodcastMapa mental
Empezar gratis

¿Ya tienes cuenta? Iniciar sesión

Apache Spark: Spark SQL Básico

Klíčová slova: Apache Spark, MapReduce, Pandas, DataFrames, Análisis de datos, Herramientas de Big Data

Klíčové pojmy: Spark incluye módulos: Core, SQL, Streaming, MLlib, GraphX, RDD es una colección distribuida con particiones y dependencias, Crear RDDs: emptyRDD, parallelize, textFile, wholeTextFiles, desde DataFrame, SparkSession es la entrada unificada para Spark, Instalación en Colab: Java 8, Spark, findSpark, pySpark y configurar variables de entorno, Leer CSV: Spark.read.csv(sep, header=True) y guardar/leer Parquet con write.parquet/read.parquet, DataFrame: select, selectExpr, filter/where, distinct/dropDuplicates, Transformaciones son perezosas; acciones materializan resultados, Parquet es columnar y más eficiente que CSV para analítica, Usar col('colname') y funciones de pyspark.sql.functions para crear expresiones

## Introducción Apache Spark es un motor distribuido de procesamiento de datos diseñado para ejecutar cargas de trabajo a gran escala con alta velocidad y tolerancia a fallas. En este material aprenderás conceptos clave de Spark SQL, cómo crear y manipular RDD y DataFrames, cómo instalar y ejecutar Spark en Google Colab, y ejemplos prácticos de lectura y escritura de archivos como CSV y Parquet. > **Definición:** Un RDD (Resilient Distributed Dataset) es una colección distribuida de elementos que puede ser procesada en paralelo y reconstruida a partir de sus dependencias. ## 1. Arquitectura y componentes principales de Spark ### Componentes principales - **Spark Core**: Motor base que gestiona tareas, memoria, programación y tolerancia a fallas. - **Spark SQL**: Paquete para trabajar con datos estructurados y ejecutar consultas SQL junto con operaciones programáticas. - **Spark Streaming**: Procesa datos en tiempo real (streams) con tolerancia a fallas similar a Spark Core. - **MLlib**: Biblioteca de aprendizaje automático con algoritmos de clasificación, regresión y clustering. - **GraphX**: Biblioteca para procesamiento de grafos y algoritmos como PageRank. | Componente | Uso principal | Ejemplo de tarea | |---|---:|---| | Spark Core | Gestión de ejecución y memoria | Coordinación de tareas en clúster | | Spark SQL | Datos estructurados y consultas | Consultas SQL sobre tablas Parquet | | Spark Streaming | Procesamiento de streams | Ingesta de eventos en tiempo real | | MLlib | Modelado predictivo | Clasificación y clustering | | GraphX | Procesamiento de grafos | Cálculo de PageRank | Did you know Spark permite combinar diferentes tipos de procesamiento (por ejemplo consultas interactivas y transmisión) dentro del mismo motor sin herramientas adicionales? ### Usuarios típicos - **Científicos de datos**: realizan análisis ad hoc y necesitan respuestas rápidas mediante APIs accesibles (Python, Scala, R, Java, SQL). - **Ingenieros de datos**: desarrollan pipelines productivos, supervisan y ajustan aplicaciones distribuidas. ## 2. RDD: conceptos y creación ### Características claves - **Dependencias**: descripción de cómo se construye un RDD para poder reconstruirlo si es necesario. - **Particiones**: división física para paralelizar trabajo entre ejecutores. - **Función de cálculo**: produce los iteradores con los datos que contiene el RDD. > **Definición:** Partición es la unidad de paralelismo en Spark; un RDD se divide en una o más particiones que se procesan en paralelo. ### Formas de crear RDD 1. RDD vacío: - `rdd_vacio = sc.emptyRDD()` - `rdd_vacio3 = sc.parallelize([], 3)` crea un RDD vacío con 3 particiones 2. Desde una lista: - `rdd = sc.parallelize([1,2,3,4,5])` y luego `rdd.collect()` para ver el contenido 3. Desde un archivo de texto: - `rdd_texto = sc.textFile('./rdd_source.txt')` (cada línea = un registro) - `rdd_text_completo = sc.wholeTextFiles('./rdd_source.txt')` (archivo completo como un solo registro) 4. A partir de otro RDD (transformaciones): - `rdd_suma = rdd.map(lambda x: x + 1)` 5. Desde un DataFrame: - `df = Spark.createDataFrame([(1,'Jose'),(2,'Juan')], ['id','Nombre'])` - `rdd_from_df = df.rdd` Fun fact: Spark guarda metadatos de cómo construir RDDs usando su grafo de dependencias, lo que le permite recomputar particiones en caso de fallos sin replicar todos los datos. ## 3. Spark Session y entorno en Google Colab ### ¿Qué es Google Colab? Google Colab es un servicio gratuito basado en Jupyter Notebook que permite ejecutar código Python en la nube, ideal para experimentar con Spark sin instalar localmente. ### Pasos resumidos para usar Spark en Colab 1. Instalar Java 8: - `!apt-get install openjdk-8-jdk-headless -qq` 2. Descargar y descomprimir Spark (ejemplo con Spark 3.2.3): - `!wget -q https://archive.apache.org/dist/Spark/Spark-3.2.3/Spark-3.2.3-bin-hadoop3.2.tgz` - `!tar xf Spark-3.2.3-bin-hadoop3.2.tgz` 3. Establecer variables de entorno en Python: