Middle+
Care este experiența ta cu AWS Glue, Antenna și Spark?
sobes.tech AI
Răspuns de la AI
Am lucrat cu AWS Glue pentru sarcini ETL fără server, folosind PySpark. Am configurat declanșatoare Glue pentru evenimente S3. Am folosit AWS Data Catalog.
Nu am experiență cu Antenna.
Am lucrat în principal cu Apache Spark prin PySpark pentru procesarea datelor mari. Am folosit Spark SQL pentru interogări structurate și API RDD pentru operațiuni de nivel inferior. Experiență în implementarea Spark: clustere locale, YARN și Spark pe Kubernetes.
Exemplu de script ETL simplu în PySpark pentru 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)
# Citirea datelor din 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"
)
# Transformarea datelor (exemplu: selectarea și redenumirea coloanelor)
applymapping1 = ApplyMapping.apply(
frame=datasource0,
mappings=[
("id", "long", "user_id", "long"),
("name", "string", "user_name", "string"),
("value", "double", "amount", "double")
],
transformation_ctx="applymapping1"
)
# Scrierea datelor transformate înapoi în 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()