Amazon Athena: SQL sin servidor en S3
Consulte directamente los datos de S3 con SQL estándar en Athena, optimice las consultas con formatos columnares como Parquet y ORC y use particiones para controlar los costes
Amazon Athena: SQL sin servidor en S3 es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué es Amazon Athena?
Amazon Athena es un servicio de consultas interactivo y sin servidor que permite ejecutar SQL estándar directamente sobre datos almacenados en Amazon S3. No es necesario aprovisionar servidores ni administrar clústeres, y solo paga por los datos examinados en cada consulta (aproximadamente 5 $ por TB examinado). Athena utiliza Presto internamente y se integra de forma nativa con Glue Data Catalogue para obtener los metadatos de las tablas.
Configuración de Athena: grupos de trabajo y ubicación de salida
Antes de ejecutar consultas, configure un Athena Workgroup y especifique una ruta de S3 para la salida de los resultados. Los grupos de trabajo permiten separar el historial de consultas y el seguimiento de costes entre equipos, aplicar el cifrado de los resultados y establecer límites de datos examinados por consulta para evitar costes descontrolados. Cada resultado de consulta se escribe como CSV en el bucket de salida de S3 configurado.
# Create a workgroup with an encrypted output location
aws athena create-work-group \
--name analytics-team \
--configuration '{
"ResultConfiguration": {
"OutputLocation": "s3://athena-results-123/analytics-team/",
"EncryptionConfiguration": {"EncryptionOption": "SSE_S3"}
},
"EnforceWorkGroupConfiguration": true,
"PublishCloudWatchMetricsEnabled": true,
"BytesScannedCutoffPerQuery": 10737418240
}'Ejecución de su primera consulta
Indique a Athena una base de datos de Glue Data Catalogue y ejecute SQL ANSI. Athena admite SELECT, JOIN, GROUP BY, funciones de ventana y CTE. También puede utilizar CREATE TABLE AS SELECT (CTAS) para guardar los resultados de una consulta como una tabla nueva en formato Parquet, materializando de hecho los resultados intermedios para acelerar las consultas posteriores.
-- Query total sales by month from partitioned S3 data
SELECT
year,
month,
SUM(order_total) AS monthly_revenue
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year, month
ORDER BY month;
-- CTAS: materialise result as Parquet for reuse
CREATE TABLE my_db.monthly_revenue
WITH (format = 'PARQUET', external_location = 's3://my-data-lake-123/curated/monthly_revenue/')
AS
SELECT year, month, SUM(order_total) AS revenue
FROM my_db.curated_sales
GROUP BY year, month;Optimización de costes: poda de particiones
Athena cobra por cada TB de datos examinado. La reducción de costes más importante se consigue mediante la poda de particiones: incluya siempre las columnas de partición en la cláusula WHERE. Si los datos están particionados por year/month/day, filtrar por estas columnas evita que Athena examine otras particiones. Sin un filtro de partición en una tabla de escala de petabytes, una consulta sencilla puede costar cientos de dólares.
-- EXPENSIVE: No partition filter -> scans all data
SELECT * FROM my_db.curated_sales WHERE customer_id = '12345';
-- CHEAP: Partition filter applied -> scans only Jan 2024
SELECT * FROM my_db.curated_sales
WHERE year = '2024' AND month = '01' AND customer_id = '12345';Optimización de costes: formato columnar
Almacenar los datos en Apache Parquet u ORC en lugar de CSV o JSON reduce drásticamente la cantidad de datos que Athena examina en cada consulta. Una consulta columnar que utiliza 3 de 50 columnas solo examina los datos correspondientes a esas 3 columnas en el disco. Gracias a la compresión integrada (Snappy, Zstd), los archivos Parquet suelen ser entre 5 y 10 veces más pequeños que los CSV equivalentes, lo que multiplica el ahorro de costes.
-- After converting raw CSV to Parquet:
-- CSV version: 500 GB table, query scans 500 GB -> $2.50
-- Parquet version: same data compressed to 50 GB,
-- query reads only 2 columns -> scans ~2 GB -> $0.01
-- Verify table format in Glue Catalogue
SHOW CREATE TABLE my_db.curated_sales;Consultas federadas con conectores de fuentes de datos
Athena Federated Query amplía Athena más allá de S3 para consultar datos en RDS, DynamoDB, Redshift, Elasticsearch y fuentes personalizadas mediante conectores de fuentes de datos basados en Lambda. Implemente una función Lambda de conector desde Serverless Application Repository, regístrela como fuente de datos de Athena y, a continuación, consulte tablas de S3 y bases de datos activas en un único JOIN de SQL, sin mover primero ningún dato.
-- Federated query: join S3 Parquet with live RDS table
SELECT s.order_id, s.total, c.email
FROM my_db.curated_sales s
JOIN rds_lambda.prod_db.customers c
ON s.customer_id = c.id
WHERE s.year = '2024' AND s.month = '01';Integración de Athena y QuickSight
Amazon QuickSight se conecta directamente a Athena como fuente de datos, lo que permite a los analistas empresariales crear paneles interactivos a partir de datos de S3 sin ninguna base de datos intermedia. QuickSight utiliza SPICE (Super-fast, Parallel, In-memory Calculation Engine) para almacenar en caché los resultados de las consultas de Athena y mostrar rápidamente los paneles. Esta pila de BI sin servidor (S3 + Glue + Athena + QuickSight) es un patrón habitual en los exámenes para realizar análisis rentables.
Optimización del rendimiento de las consultas de Athena
Además de la partición y el formato columnar, puede optimizar aún más las consultas de Athena mediante las siguientes técnicas: dividir los archivos grandes (el objetivo es utilizar archivos de entre 128 MB y 1 GB para facilitar el paralelismo), usar bucketización para las columnas que se combinan con frecuencia, evitar SELECT * y utilizar funciones de agregación aproximada como approx_distinct() y approx_percentile() cuando no se necesiten valores exactos. Estas técnicas reducen tanto los costes como la latencia.
-- Use approx_distinct for fast cardinality estimate
SELECT
year,
approx_distinct(customer_id) AS approx_unique_customers
FROM my_db.curated_sales
WHERE year = '2024'
GROUP BY year;Control del acceso a Athena
Athena se integra con IAM para el control de acceso: los usuarios necesitan permisos para ejecutar consultas de Athena (athena:StartQueryExecution), acceder al bucket de salida de S3 y leer los datos subyacentes de S3. Para controlar con precisión el acceso a columnas y filas, combine Athena con Lake Formation. También puede restringir un grupo de trabajo a bases de datos específicas mediante claves de condición de IAM en el ARN del grupo de trabajo.
# Minimum IAM policy for an Athena analyst
{
"Effect": "Allow",
"Action": [
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:StopQueryExecution",
"glue:GetDatabase",
"glue:GetTable",
"glue:GetPartitions",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "*"
}Guardado de resultados y consultas programadas
Los resultados de las consultas de Athena se almacenan como archivos CSV en S3 y se guardan en caché durante 7 días, por lo que volver a ejecutar la misma consulta dentro de ese periodo no vuelve a examinar los datos. Para necesidades de informes periódicos, utilice Athena Scheduled Queries para ejecutar una consulta según una programación cron y guardar los resultados en una ubicación nueva de S3 o directamente en una tabla. Como alternativa, active una consulta de Athena desde una máquina de estados de Step Functions o una regla de EventBridge.
# Start an Athena query via CLI and retrieve results
QUERY_ID=$(aws athena start-query-execution \
--query-string 'SELECT COUNT(*) FROM my_db.curated_sales WHERE year=2024' \
--work-group analytics-team \
--query 'QueryExecutionId' --output text)
# Wait and fetch results
aws athena get-query-results --query-execution-id $QUERY_IDAthena frente a Redshift: elección de la herramienta adecuada
Para el examen SAA-C03, debe saber cuándo recomendar Athena frente a Redshift. Elija Athena para consultas ad hoc e infrecuentes sobre S3, sin infraestructura que administrar. Elija Redshift cuando necesite tiempos de respuesta inferiores a un segundo para combinaciones complejas, disponga de un equipo de análisis dedicado que ejecute cientos de consultas simultáneas o quiera utilizar Redshift Spectrum para ampliar un almacén de datos con datos de S3. El factor clave es la frecuencia y complejidad de las consultas.
Comprobación rápida
Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) de esta lección.
Resumen de la lección
En esta lección ha aprendido que: Athena cobra por cada TB examinado, por lo que la poda de particiones y el formato Parquet son controles de costes esenciales, Athena Federated Query amplía SQL a fuentes de datos que no son S3 mediante conectores de Lambda, y Athena es más adecuado para consultas ad hoc, mientras que Redshift se adapta mejor a los análisis con alta simultaneidad. A continuación, exploraremos Kinesis para la transmisión y el análisis de datos en tiempo real.
Preguntas frecuentes
¿La lección «Amazon Athena: SQL sin servidor en S3» es gratis?
Sí — el texto completo de «Amazon Athena: SQL sin servidor en S3» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Amazon Athena: SQL sin servidor en S3»?
Consulte directamente los datos de S3 con SQL estándar en Athena, optimice las consultas con formatos columnares como Parquet y ORC y use particiones para controlar los costes Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?
No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Amazon Athena: SQL sin servidor en S3»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?
Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Creación de un lago de datos en S3
- AWS Glue: ETL y catálogo de datos
- Amazon Athena: SQL sin servidor en S3
- Kinesis Streams, Firehose y análisis en tiempo real