tutoriales.com

Construyendo un Lago de Datos Eficiente en AWS con Amazon Athena y AWS Glue

Descubre cómo unificar tus fuentes de datos y analizarlas en tiempo real sin aprovisionar servidores. Este tutorial cubre la configuración de almacenamiento en S3, catálogos automatizados con Glue y consultas analíticas con Athena.

Intermedio12 min de lectura22 views
Reportar error

Construir un lago de datos moderno ya no requiere la costosa gestión de servidores dedicados ni infraestructuras complejas. En la actualidad, AWS ofrece un ecosistema nativo en la nube que permite almacenar, catalogar y consultar petabytes de información de forma Serverless (sin servidores). En este tutorial completo, aprenderás a diseñar, implementar y consultar un lago de datos eficiente utilizando Amazon S3, AWS Glue y Amazon Athena.

💡 Consejo: Este enfoque te permite pagar únicamente por la cantidad de datos escaneados en tus consultas, lo que reduce drásticamente los costos operativos comparado con bases de datos tradicionales.

📋 Objetivos de Aprendizaje y Prerrequisitos

Al finalizar este tutorial, serás capaz de:

  • Diseñar una arquitectura de almacenamiento en capas dentro de Amazon S3.
  • Automatizar el descubrimiento y catalogación de esquemas utilizando los rastreadores (Crawlers) de AWS Glue.
  • Escribir consultas SQL avanzadas para analizar datos no estructurados y semi-estructurados con Amazon Athena.
  • Aplicar mejores prácticas de particionamiento y formatos de compresión para optimizar costos y velocidad.

Prerrequisitos Necesarios

  • Una cuenta activa de AWS con permisos administrativos o acceso a S3, Glue y Athena.
  • Conocimientos básicos de SQL y bases de datos relacionales.
  • Familiaridad inicial con la consola de administración de AWS.

🏗️ Arquitectura del Lago de Datos en AWS

Un lago de datos exitoso se organiza tradicionalmente en zonas de almacenamiento para mantener el orden, la calidad y la seguridad de la información. Utilizaremos un patrón de tres capas: Raw (datos crudos), Processed (datos limpios y transformados) y Curated (datos listos para negocio).

Fuentes de Datos Archivos CSV JSON Logs Amazon S3 Bucket 1. raw-zone Datos Originales 2. processed-zone Datos Transformados 3. curated-zone Listos para Analítica AWS Glue Crawler Analiza esquemas Glue Data Catalog Metadatos Amazon Athena Consultas SQL
Capa de S3PropósitoFormato Recomendado
---------
Raw ZoneAlmacenamiento original sin alteracionesCSV, JSON, XML
Processed ZoneDatos limpios, filtrados y tipadosParquet, ORC
---------
Curated ZoneTablas agregadas y listas para Business IntelligenceParquet con compresión Snappy

🛠️ Paso 1: Configuración del Almacenamiento en Amazon S3

El primer paso consiste en crear el bucket de S3 que servirá como el repositorio central de nuestro lago de datos. Es recomendable habilitar el versionado y aplicar políticas de cifrado.

  1. Abre la consola de Amazon S3.
  2. Haz clic en Crear bucket.
  3. Asigna un nombre único a nivel global (por ejemplo, mi-lago-datos-empresa-xyz).
  4. Selecciona tu región preferida (asegúrate de usar la misma región para S3, Glue y Athena).
  5. Mantén la configuración predeterminada para bloquear el acceso público por seguridad.
  6. Haz clic en Crear bucket.

Una vez creado el bucket, estructúralo creando las siguientes carpetas vacías (prefijos):

  • raw/
  • processed/
  • curated/
⚠️ Advertencia: Evita cambiar la estructura de carpetas una vez que los catálogos y las consultas estén configurados, ya que esto rompería las rutas de las tablas en Athena.

🔍 Paso 2: Automatización del Catálogo con AWS Glue

Para que Athena pueda consultar nuestros datos, necesita conocer su esquema (columnas, tipos de datos, delimitadores). En lugar de definir esto manualmente, utilizaremos AWS Glue Crawlers para escanear los archivos en S3 y poblar el Glue Data Catalog.

Creación de una Base de Datos en Glue

  1. Ve a la consola de AWS Glue.
  2. En el panel de navegación izquierdo, selecciona Data Catalog y luego Databases.
  3. Haz clic en Add database.
  4. Introduce el nombre lago_datos_db y una descripción opcional. Haz clic en Create.

Creación y Ejecución de un Crawler

Un Crawler examinará los datos en nuestra zona raw/ y creará automáticamente las tablas correspondientes.

Paso 1: Ir a la sección Crawlers en la consola de AWS Glue y hacer clic en Create crawler.
Paso 2: Nombrar al crawler (ej. raw-data-crawler) y seleccionar la fuente de datos apuntando a s3://mi-lago-datos-empresa-xyz/raw/.
Paso 3: Configurar un rol IAM con permisos de lectura para S3 y permisos básicos de Glue.
Paso 4: Seleccionar la base de datos destino lago_datos_db creada anteriormente.
Paso 5: Ejecutar el crawler bajo demanda y esperar a que finalice con estado Completed.

📊 Paso 3: Consultas Analíticas con Amazon Athena

Con los datos catalogados en AWS Glue, podemos utilizar Amazon Athena para realizar consultas interactivas utilizando SQL estándar sin necesidad de mover la información.

  1. Abre la consola de Amazon Athena.
  2. Si es tu primera vez, configura una ubicación de resultados de consulta en S3 (puedes crear una carpeta adicional llamada athena-results/).
  3. En el panel izquierdo, asegúrate de que el origen de datos sea AwsDataCatalog y selecciona la base de datos lago_datos_db.
  4. Verás las tablas descubiertas por el crawler de Glue.

Ejemplo de Consulta SQL

Imaginemos que tus datos crudos contienen registros de ventas de comercio electrónico. Puedes ejecutar la siguiente sentencia SQL en el editor de consultas:

SELECT 
    product_category,
    COUNT(order_id) AS total_orders,
    SUM(total_amount) AS revenue
FROM 
    "lago_datos_db"."raw_ventas"
WHERE 
    year = '2023'
GROUP BY 
    product_category
ORDER BY 
    revenue DESC;
📌 Nota: Athena utiliza Presto por debajo, por lo que soporta funciones avanzadas de SQL, uniones complejas, funciones de ventana y consultas sobre formatos JSON anidados.

⚡ Optimización del Rendimiento y Reducción de Costos

A medida que tu volumen de datos crece, las consultas en archivos planos (como CSV o JSON) pueden volverse lentas y costosas, ya que Athena debe escanear todo el archivo. Para solucionar esto, aplica estas dos estrategias fundamentales:

1. Conversión a Formato Parquet

Parquet es un formato de almacenamiento columnar optimizado para análisis. Puedes usar trabajos visuales de AWS Glue ETL para transformar tus datos de CSV a Parquet.

2. Particionamiento de Datos

Organiza tus datos en S3 utilizando particiones basadas en fechas u otras dimensiones clave:

  • s3://mi-lago-datos-empresa-xyz/processed/ventas/año=2023/mes=10/

Esto permite que Athena escanee únicamente las particiones necesarias en lugar de todo el conjunto de datos, reduciendo los tiempos de respuesta de minutos a segundos.


🧠 Preguntas Frecuentes (FAQ)

¿Puedo consultar datos estructurados y no estructurados al mismo tiempo? Sí, Amazon Athena permite combinar datos relacionales almacenados en formatos columnares con registros de texto plano o logs semi-estructurados en formato JSON utilizando uniones (joins) estándar de SQL.
¿Cómo se tarifica Amazon Athena? Athena cobra en función de la cantidad de datos escaneados durante cada consulta, calculada en terabytes (TB). Por eso es altamente recomendable utilizar formatos comprimidos como Parquet y particionar los datos.
¿Qué diferencia hay entre un Data Lake y un Data Warehouse? Un Data Lake (como el que construimos aquí) almacena datos en su formato nativo, estructurados o no, orientados a exploración y machine learning. Un Data Warehouse está altamente estructurado, optimizado para reportes transaccionales y BI corporativo (como Amazon Redshift).

🎯 Conclusión

Has construido exitosamente un lago de datos moderno, escalable y sin servidores en AWS. Combinando la durabilidad y bajo costo de Amazon S3, la automatización de esquemas de AWS Glue y la potencia de consulta instantánea de Amazon Athena, tienes una plataforma analítica robusta lista para crecer junto con las necesidades de tu organización. Continúa explorando las capacidades de optimización y automatización para llevar tu arquitectura de datos al siguiente nivel.

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!