Resumen de Introducción a Apache Spark y Big Data
Introducción a Apache Spark y Big Data: Guía Completa
Introducción
El análisis de datos es una disciplina clave para convertir información en decisiones fundamentadas. En este material aplicaremos técnicas prácticas sobre un conjunto real: datos de contagios de COVID-19 en Corea del Sur (conjunto DS4C, NeurIPS 2020). Veremos cómo identificar las ciudades con más casos y cómo preparar un DataFrame de pacientes para un flujo ETL reproducible.
Definición: El análisis de datos es el proceso de inspeccionar, limpiar y modelar datos con el objetivo de descubrir información útil y apoyar la toma de decisiones.
Objetivos de la lección
- Identificar las tres ciudades con más casos confirmados a partir del archivo CSV
Case. - Crear y procesar un DataFrame sin duplicados a partir de
PatientInfocon filtros específicos y escribir el resultado en formato Parquet partitionado.
Datos y archivos usados
Case.csv: registros de casos reportados (provincia, ciudad, fecha, etc.).PatientInfo.csv: información demográfica y clínica de pacientes (incluyeinfected_by,gender,released_date,deceased_date, provincia, etc.).
Parte A — Encontrar las tres ciudades con más casos confirmados
Enfoque conceptual
- Agrupar por provincia y ciudad.
- Contar casos confirmados por ciudad.
- Ordenar de mayor a menor y seleccionar las tres primeras filas.
Definición: Agrupación es la operación que consolida filas según una o más columnas para aplicar una función de agregación (por ejemplo, contar).
Resultado esperado
La salida debe ser una tabla con exactamente tres filas y tres columnas: province, city, confirmed_cases. Debe contener únicamente las tres ciudades con mayor número de casos confirmados y ningún otro valor.
Ejemplo de pasos (pseudocódigo conceptual):
- Leer
Case.csv. - Agrupar por
province,cityy contar los registros comoconfirmed_cases. - Ordenar por
confirmed_casesdescendente. - Tomar las primeras 3 filas.
Ejemplo ilustrativo (resultado ficticio)
| province | city | confirmed_cases |
|---|---|---|
| Provincia A | Ciudad X | 1234 |
| Provincia B | Ciudad Y | 987 |
| Provincia C | Ciudad Z | 876 |
Parte B — Procesamiento del archivo PatientInfo
Requisitos paso a paso
- Crear un DataFrame a partir de
PatientInfo.csv. - Eliminar pacientes duplicados (definir duplicado según el identificador único del paciente).
- Contar cuántos pacientes tienen informado el campo
infected_by(no nulo). - Filtrar únicamente los pacientes que tienen
infected_byinformado. - A partir de este subconjunto, obtener sólo las pacientes femeninas (
gender= "female" o equivalente en el dataset). - El resultado no debe contener las columnas
released_datenideceased_date. - Establecer el número de particiones del DataFrame resultante en dos.
- Escribir el DataFrame en formato Parquet partitionado por
provincecon modooverwrite.
Definición: Particionar un conjunto de datos significa organizar los archivos de salida en subcarpetas según una o más columnas; esto mejora el acceso y la metainformación para consultas posteriores.
Consideraciones prácticas
- Duplicados: identificar la columna o combinación de columnas que funciona como llave primaria (por ejemplo,
patient_id). infected_by: contar entradas no nulas para conocer cuántos pacientes tienen dato de fuente de infección.- Filtrado por género: asegurarse de normalizar valores como
F,Female,femaleantes de filtrar. - Columnas a eliminar: eliminar
released_date,deceased_dateantes de escribir. - Particiones: al re-particionar a 2 particiones, se controla la paralelización y el tamaño de los archivos de salida.
Pseudocódigo conceptual (pasos resumidos)
- Leer
PatientInfo.csven un DataFrame. - Drop duplicates por
patient_id. - Contar filas
¿Ya tienes cuenta? Iniciar sesión
Análisis de datos COVID-19
Klíčové pojmy: Agrupar por provincia y ciudad y contar casos., Ordenar descendentemente y seleccionar exactamente 3 ciudades., Eliminar duplicados usando un identificador único., Contar pacientes con campo infected_by no nulo., Filtrar pacientes con infected_by informado., Seleccionar sólo pacientes femeninos tras el filtro anterior., Eliminar columnas released_date y deceased_date antes de escribir., Reparticionar a 2 particiones y escribir Parquet partitioned by province en modo overwrite