¿De dónde vienen los datos?
Antes de procesar datos hay que entender de dónde nacen. En Big Data no existe una única fuente: los datos llegan simultáneamente desde muchos orígenes, con formatos y velocidades muy distintos. Conocerlas es clave para diseñar bien la ingesta.
Principales fuentes de datos
| Fuente | Descripción | Tipo de dato típico | Ejemplo |
|---|---|---|---|
| Sistemas transaccionales | Bases de datos operativas de las aplicaciones de negocio | Estructurado | Ventas de un e-commerce, movimientos bancarios |
| Sensores e IoT | Dispositivos físicos que miden el mundo real en continuo | Semi-estructurado | Temperatura de una planta, GPS de una flota |
| Redes sociales | Plataformas donde los usuarios generan contenido | No estructurado / semi | Tuits, comentarios, imágenes, reacciones |
| Logs de aplicaciones | Registros que los sistemas escriben sobre su propia actividad | Semi-estructurado | Logs de un servidor web, eventos de una app móvil |
| Datos abiertos | Conjuntos publicados por gobiernos e instituciones | Variado | Censos, datos meteorológicos, transporte público |
Un mismo proyecto suele combinar varias fuentes: una tienda puede cruzar sus ventas (transaccional) con el clima (datos abiertos) y las menciones en redes sociales para explicar por qué varió la demanda.
Características que importan de cada fuente
- Volumen: ¿cuántos datos genera? Un censo son millones de filas; un parque de sensores, miles de millones.
- Velocidad: ¿llegan en lotes periódicos o en un flujo continuo (streaming)?
- Confiabilidad: los datos abiertos suelen estar curados; las redes sociales tienen ruido, duplicados y bots.
El ciclo de vida del dato
Desde que un dato nace hasta que alguien toma una decisión con él, atraviesa una serie de etapas encadenadas conocida como el ciclo de vida del dato (o pipeline de datos):
graph LR F1["Sistemas<br/>transaccionales"] --> I["1. Ingesta"] F2["Sensores / IoT"] --> I F3["Redes sociales"] --> I F4["Logs"] --> I F5["Datos abiertos"] --> I I --> A["2. Almacenamiento"] A --> P["3. Procesamiento"] P --> AN["4. Análisis"] AN --> V["5. Visualización"] V --> D["Decisión de negocio"]
1. Ingesta
Es la entrada de datos al sistema: capturar registros desde las fuentes y llevarlos a la plataforma. Puede hacerse en lotes (batch, cada noche se cargan las ventas del día) o en streaming (cada evento se procesa al llegar). Aquí suele aplicarse una primera limpieza: descartar registros corruptos, duplicados o incompletos.
2. Almacenamiento
Los datos ingeridos se guardan en sistemas capaces de escalar: sistemas de archivos distribuidos, bases NoSQL, data lakes. La elección depende del formato y del uso posterior (esto se verá en detalle en la próxima lección).
3. Procesamiento
Transformar los datos crudos en algo útil: filtrar, unir fuentes, agregar, enriquecer. Es la etapa donde más cómputo se consume y donde brillan los motores distribuidos.
4. Análisis
Extraer conocimiento: estadísticas, detección de patrones, modelos predictivos. El análisis responde preguntas de negocio concretas (“¿qué productos se venden juntos?”).
5. Visualización
Presentar los resultados de forma comprensible: dashboards, gráficos, informes. Un buen análisis mal comunicado no genera decisiones.
Las etapas no son estrictamente lineales: el análisis suele revelar datos faltantes o de mala calidad, lo que obliga a volver atrás y mejorar la ingesta o el procesamiento.
Ejercicio: mini-pipeline de ingesta
🧪 Ejercicio
Ingesta, limpieza y conteo de registros
Simula la etapa de ingesta de un pipeline: tienes una lista de registros crudos de sensores (líneas de texto con formato 'sensor_id,temperatura'). Escribe código que: (1) lea cada registro, (2) descarte los que estén vacíos o mal formados (no tengan exactamente 2 campos o la temperatura no sea numérica), y (3) cuente cuántas lecturas válidas llegaron de cada sensor.
🔍 Usa split(',') para separar campos, try/except para validar la temperatura con float(), y un diccionario para contar por sensor.
registros = [
"S1,23.5",
"S2,21.0",
"", # registro vacio
"S1,error", # temperatura no numerica
"S3,19.8",
"S1,24.1",
"S2", # registro mal formado
"S2,22.3",
]
def ingerir(registros):
"""Lee registros crudos, limpia y cuenta lecturas validas por sensor."""
conteo = {}
descartados = 0
for linea in registros:
campos = linea.split(",")
if len(campos) != 2:
descartados += 1
continue
sensor, valor = campos
try:
temperatura = float(valor)
except ValueError:
descartados += 1
continue
conteo[sensor] = conteo.get(sensor, 0) + 1
return conteo, descartados
conteo, descartados = ingerir(registros)
print("Lecturas validas por sensor:", conteo)
print("Registros descartados:", descartados)
# Lecturas validas por sensor: {'S1': 2, 'S2': 2, 'S3': 1}
# Registros descartados: 3Comprueba lo aprendido
Comprueba que lo pillaste
Un ayuntamiento publica en su portal un CSV actualizado cada mes con el uso del transporte público. ¿Qué tipo de fuente es y con qué modalidad se ingeriría normalmente?
Es una fuente de datos abiertos (publicada por una institución pública) y, al actualizarse una vez al mes, lo natural es ingerirla en lotes periódicos, no en streaming.
Comprueba que lo pillaste
¿En qué etapa del ciclo de vida del dato se descartan registros duplicados o corruptos por primera vez?
La ingesta es la puerta de entrada: ahí se capturan los datos y se aplica la primera limpieza (duplicados, registros corruptos o incompletos) antes de almacenarlos.
Comprueba que lo pillaste
¿Cuál es el orden correcto de las etapas del ciclo de vida del dato?
Primero se ingieren los datos, luego se almacenan, después se procesan y transforman, sobre el resultado se analiza y finalmente se visualiza para apoyar la decisión.
Resumen
- Las fuentes típicas de Big Data son: sistemas transaccionales, sensores/IoT, redes sociales, logs y datos abiertos.
- Cada fuente se caracteriza por su volumen, velocidad (batch vs. streaming) y confiabilidad.
- El ciclo de vida del dato encadena cinco etapas: ingesta → almacenamiento → procesamiento → análisis → visualización.
- La ingesta incluye una primera limpieza: descartar registros corruptos, duplicados o incompletos.
- El ciclo es iterativo: el análisis puede obligar a volver atrás y mejorar etapas anteriores.
📚 Lecturas y fuentes
| Recurso | Tipo | Por qué leerlo |
|---|---|---|
| Datos abiertos (Wikipedia en español) | Artículo | Lee la introducción y “Argumentos a favor” para entender qué son los datos abiertos como fuente y por qué suelen estar mejor curados. |
| datos.gob.es — catálogo de datos abiertos | Docs | No se lee: se explora. Busca un dataset de tu interés y mira su formato y frecuencia de actualización, así ves batch vs. streaming en la práctica. |
| Apache Kafka — Documentation, “Introduction” | Docs | Solo la sección 1 (“Getting Started / Introduction”): el modelo de ingesta por eventos que domina el streaming hoy (en inglés). |
| Designing Data-Intensive Applications (Martin Kleppmann) | Libro | Cap. 11 “Stream Processing”, primeras secciones (“Transmitting Event Streams”): la diferencia real entre ingesta batch y streaming (en inglés). |