Sobes.tech
Middle+

¿Cuál es su experiencia trabajando con AWS Glue, Antenna y Spark?

sobes.tech AI

Respuesta de la IA

Trabajé con AWS Glue para tareas ETL sin servidor, usando PySpark. Configuraba desencadenantes de Glue en eventos de S3. Utilizaba AWS Data Catalog.

Nunca enfrenté Antenna.

Trabajé principalmente con Apache Spark a través de PySpark para procesar grandes datos. Utilicé Spark SQL para consultas estructuradas y RDD API para operaciones de nivel inferior. Experiencia en despliegue de Spark: clústeres locales, YARN y Spark en Kubernetes.

Ejemplo de un script ETL simple en PySpark para AWS Glue:

# glue_etl_script.py
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

# Leer datos desde S3
datasource0 = glueContext.create_dynamic_frame.from_options(
    format_options={"multiline": False},
    connection_type="s3",
    format="json",
    connection_options={"paths": ["s3://my-source-bucket/input_data/"], "recurse": True},
    transformation_ctx="datasource0"
)

# Transformar datos (ejemplo: seleccionar y renombrar columnas)
applymapping1 = ApplyMapping.apply(
    frame=datasource0,
    mappings=[
        ("id", "long", "user_id", "long"),
        ("name", "string", "user_name", "string"),
        ("value", "double", "amount", "double")
    ],
    transformation_ctx="applymapping1"
)

# Escribir datos transformados de vuelta en S3
datasink2 = glueContext.write_dynamic_frame.from_options(
    frame=applymapping1,
    connection_type="s3",
    format="parquet",
    connection_options={"path": "s3://my-target-bucket/output_data/", "partitionKeys": []},
    transformation_ctx="datasink2"
)

job.commit()