Data Lake
Un lago de datos almacena datos sin procesar en cualquier formato en un almacenamiento de objetos económico y aplica un esquema al leerlos. Compara los lagos de datos con los almacenes de datos y los lakehouses.
Un lago de datos es un repositorio central que almacena datos en su formato original, desde exportaciones de bases de datos y registros JSON hasta imágenes, vídeo, audio y documentos, normalmente en almacenamiento de objetos en la nube de bajo coste, y aplica una estructura solo cuando se leen los datos. James Dixon, entonces director de tecnología de Pentaho, acuñó el término en 2010 para contrastarlo con un mercado de datos, que comparó con agua embotellada, limpia y envasada, frente a una gran masa de datos en su estado natural de la que pueden extraer información muchos usuarios. Como no es necesario modelar nada de antemano, un lago puede conservar todo lo que recopila una organización, lo que resulta adecuado para el aprendizaje automático: los datos de entrenamiento para el modelo del mañana suelen ser datos sin procesar cuyo uso nadie conocía cuando se almacenaron.
Cómo funciona un lago de datos#
Un lago separa el almacenamiento del procesamiento. Los archivos se guardan en almacenamiento de objetos como Amazon S3, Google Cloud Storage o Azure Data Lake Storage, y motores como Spark, Trino o un proceso de Python los leen directamente, de modo que cada equipo puede escalar su propio procesamiento sin copiar los datos. Los datos tabulares suelen conservarse en formatos columnares abiertos como Apache Parquet, mientras que las imágenes y los vídeos permanecen como archivos normales, a menudo junto a manifiestos JSON o Parquet que contienen sus metadatos y etiquetas.
La mayoría de los lagos se organizan en zonas según su grado de refinamiento, en lo que Databricks denomina arquitectura medallón: una zona sin procesar (bronce) conserva los datos exactamente como llegaron; una zona depurada (plata) contiene datos validados y sin duplicados; y una zona seleccionada (oro) contiene tablas y conjuntos de datos listos para generar informes o entrenar modelos. Un catálogo de metadatos como AWS Glue Data Catalog, Hive Metastore o Unity Catalog registra qué contiene cada conjunto de datos, quién es su propietario y quién puede leerlo. Sin ese catálogo y la limpieza de datos, un lago se convierte en un «pantano de datos»: archivos que nadie puede encontrar, en los que nadie confía ni que nadie puede eliminar de forma segura.
Esquema en la lectura#
Un lago aplica un esquema cuando se leen los datos; esto se denomina esquema en la lectura. Los escritores pueden incorporar los datos en cuanto existen, aunque dos fuentes no coincidan en sus campos, y cada lector decide qué columnas y tipos necesita. En este ejemplo se escriben dos archivos JSON sin procesar con campos distintos y, después, ambos se leen con un único esquema usando Polars:
import json
from pathlib import Path
import polars as pl
# Zona sin procesar: dos cámaras escriben eventos de detección como líneas JSON, cada una con sus propios campos
Path("lake/raw").mkdir(parents=True, exist_ok=True)
Path("lake/raw/dock-1.jsonl").write_text(json.dumps({"label": "forklift", "conf": 0.91}))
Path("lake/raw/dock-2.jsonl").write_text(json.dumps({"label": "person", "conf": 0.62, "lux": 120}))
# Esquema en la lectura: este lector elige las columnas y los tipos al consultar los archivos
schema = {"label": pl.String, "conf": pl.Float32, "lux": pl.Int32}
events = pl.scan_ndjson("lake/raw/*.jsonl", schema=schema, include_file_paths="source")
print(events.collect())El resultado tiene dos filas con las columnas label, conf, lux y source. La primera cámara nunca registró lux, así que su valor aparece como null, y source indica de qué archivo sin procesar procede cada fila. Un segundo trabajo podría leer los mismos archivos con otro esquema sin reescribirlos.
Lago de datos frente a almacén de datos y lakehouse#
- Almacén de datos: Almacena tablas depuradas y estructuradas con un esquema fijo que los datos deben cumplir al cargarse (esquema en la escritura), normalmente después de una etapa de extracción, transformación y carga (ETL). Los almacenes como Snowflake, BigQuery y Redshift responden rápidamente a consultas SQL y de inteligencia empresarial, pero ofrecen menos flexibilidad para imágenes, texto y otros datos no estructurados.
- Lago de datos: Almacena cualquier formato a bajo coste y transforma los datos después de cargarlos (ELT), lo que favorece la exploración, la minería de datos y el aprendizaje automático. Los archivos de un lago sin más carecen de transacciones, por lo que varios escritores simultáneos pueden dejar resultados escritos a medias que los lectores podrían consultar.
- Lakehouse: Añade funciones de almacén al almacenamiento de un lago mediante formatos de tabla abiertos como Apache Iceberg, Delta Lake y Apache Hudi, que ofrecen transacciones ACID, aplicación de esquemas y la posibilidad de volver a versiones anteriores de una tabla. Un artículo de 2021 de investigadores de Databricks describió esta arquitectura.
Lagos de datos en el aprendizaje automático#
Para los equipos de visión artificial, el lago contiene cada fotograma de cámara, sus metadatos de captura, sus anotaciones y las predicciones que hacen los modelos desplegados. Los programas de vehículos autónomos cargan los registros de conducción de sus flotas y los analizan en busca de escenas poco frecuentes, como un peatón de noche y bajo la lluvia, para etiquetarlas y añadirlas a los conjuntos de entrenamiento. En sanidad, las imágenes y los informes anonimizados recopilados en un único lago proporcionan los datos para los modelos de análisis de imágenes médicas. Las predicciones de producción que vuelven al lago para revisarlas y volver a etiquetarlas cierran un ciclo de retroalimentación de datos, y las instantáneas de tablas o herramientas como DVC fijan la versión exacta de los datos con la que se entrenó cada modelo. Los almacenes de características y las bases de datos vectoriales suelen construirse sobre un lago y proporcionan características o embeddings derivados de sus archivos sin procesar.
Ultralytics Platform puede convertir una carpeta de Amazon S3, Google Cloud Storage o Azure Blob Storage en un conjunto de datos de entrenamiento sin cargar una copia: indexa in situ hasta 500 000 objetos por importación con credenciales de solo lectura, analiza los archivos de etiquetas YOLO .txt junto a las imágenes y asigna las particiones de entrenamiento, validación y prueba a partir de los nombres de las carpetas. Cada imagen indexada queda vinculada a la versión de su objeto, por lo que Platform falla de forma segura si se sobrescribe cualquier imagen del lago.










