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.
| 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 |
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
- RDD vacío:
rdd_vacio = sc.emptyRDD()rdd_vacio3 = sc.parallelize([], 3)crea un RDD vacío con 3 particiones
- Desde una lista:
rdd = sc.parallelize([1,2,3,4,5])y luegordd.collect()para ver el contenido
- 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)
- A partir de otro RDD (transformaciones):
rdd_suma = rdd.map(lambda x: x + 1)
- Desde un DataFrame:
df = Spark.createDataFrame([(1,'Jose'),(2,'Juan')], ['id','Nombre'])rdd_from_df = df.rdd
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
- Instalar Java 8:
!apt-get install openjdk-8-jdk-headless -qq
- 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
- Establecer variables de entorno en Python:
¿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