Sobes.tech
Middle+

Quelle est votre expérience avec AWS Glue, Antenna et Spark?

sobes.tech IA

Réponse de l'IA

J'ai travaillé avec AWS Glue pour des tâches ETL sans serveur, en utilisant PySpark. Je configurais des déclencheurs Glue sur des événements S3. J'utilisais AWS Data Catalog.

Je n'ai pas rencontré Antenna.

J'ai principalement travaillé avec Apache Spark via PySpark pour traiter de grandes données. J'ai utilisé Spark SQL pour des requêtes structurées et l'API RDD pour des opérations de bas niveau. Expérience en déploiement de Spark : clusters locaux, YARN et Spark sur Kubernetes.

Exemple d'un script ETL simple en PySpark pour 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)

# Lecture des données depuis 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"
)

# Transformation des données (exemple : sélection et renommage de colonnes)
applymapping1 = ApplyMapping.apply(
    frame=datasource0,
    mappings=[
        ("id", "long", "user_id", "long"),
        ("name", "string", "user_name", "string"),
        ("value", "double", "amount", "double")
    ],
    transformation_ctx="applymapping1"
)

# Écriture des données transformées en retour dans 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()