Python Advanced Series — Cloud Integration

9. Lectura directa de Data Lakes (S3)

9. Direct Data Lake Reading (S3)

Trabaja con archivos Parquet comprimidos directamente en la nube sin tener que descargarlos a tu disco local.

Work with compressed Parquet files directly in the cloud without downloading them to your local disk.

⚠️ Advertencia de ciberseguridad y producción ⚠️ Cybersecurity and production warning

Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, APIs externas, portales con login, datos sensibles, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.

This exercise is for learning and testing only. Do not run scripts against real data, production environments, external APIs, login portals, sensitive data, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.

Objetivo del ejercicio

Exercise objective

Leer y escribir archivos Parquet en rutas tipo S3 usando pandas, pyarrow y s3fs, manteniendo el proceso preparado para Data Lakes.

Read and write Parquet files in S3-style paths using pandas, pyarrow, and s3fs, keeping the process ready for Data Lakes.

Datos sintéticos

Synthetic data

archivoformatoubicacion
datos.parquetParquets3://mi-bucket/datos/
datos_limpios.parquetParquets3://mi-bucket/output/

Ejemplo base

Base example

import pandas as pd

url_in = "s3://mi-bucket-corporativo/datos.parquet"
url_out = "s3://mi-bucket-corporativo/datos_limpios.parquet"

df = pd.read_parquet(url_in)
df.to_parquet(url_out)

Resultado esperado

Expected result

metricvalue
rows_read125000
columns_read12
output_formatparquet
statuscompleted

Script completo

Complete script

# ==========================================================
# Python Advanced Topic 09
# Direct Data Lake Reading with S3 Paths
# ==========================================================

# pip install pandas pyarrow s3fs
# Credentials must be configured securely outside the script.

import pandas as pd

url_in = "s3://mi-bucket-corporativo/datos.parquet"
url_out = "s3://mi-bucket-corporativo/datos_limpios.parquet"

# Read directly from the Data Lake
df = pd.read_parquet(url_in, engine="pyarrow")

# Example cleaning step
df.columns = [c.strip().lower().replace(" ", "_") for c in df.columns]

if "ventas" in df.columns:
    df = df[df["ventas"] > 0]

# Write back to cloud storage
df.to_parquet(url_out, engine="pyarrow", index=False)

print("Data Lake process completed")
print(f"Rows written: {len(df)}")
print(f"Output: {url_out}")

Salida esperada en consola

Expected console output

Data Lake process completed
Rows written: 125000
Output: s3://mi-bucket-corporativo/datos_limpios.parquet

Aplicaciones reales

Real-world applications

  • Procesar archivos de Data Lakes.
  • Evitar descargas locales innecesarias.
  • Automatizar ETL con Parquet.
  • Preparar flujos para AWS, Azure o entornos híbridos.
  • Process Data Lake files.
  • Avoid unnecessary local downloads.
  • Automate ETL with Parquet.
  • Prepare workflows for AWS, Azure, or hybrid environments.

Recomendaciones

Recommendations

  • Nunca escribir credenciales dentro del código.
  • Usar roles, perfiles o variables de entorno.
  • Probar permisos de lectura/escritura antes de producción.
  • Preferir Parquet para columnas y compresión.
  • Never hard-code credentials.
  • Use roles, profiles, or environment variables.
  • Test read/write permissions before production.
  • Prefer Parquet for columnar storage and compression.

Valor del tópico

Topic value

Leer directamente desde un Data Lake permite construir flujos modernos y escalables sin depender de copias manuales de archivos.

Reading directly from a Data Lake enables modern scalable workflows without relying on manual file copies.