Middle+
Koje imate iskustvo sa AWS Glue, Antenna i Spark?
sobes.tech АИ
Одговор од АИ
Radio sam s AWS Glue za serverless ETL zadatke koristeći PySpark. Konfigurisao sam Glue okidače za događaje S3. Koristio sam AWS Data Catalog.
Nemam iskustva sa Antenna.
Uglavnom sam radio sa Apache Spark putem PySpark za obradu velikih podataka. Koristio sam Spark SQL za strukturirane upite i RDD API za operacije nižeg nivoa. Iskustvo u implementaciji Spark-a: lokalni klasteri, YARN i Spark na Kubernetes-u.
Primer jednostavnog ETL skripta u PySpark za 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)
# Čitanje podataka iz 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"
)
# Transformacija podataka (primer: izbor i preimenovanje kolona)
applymapping1 = ApplyMapping.apply(
frame=datasource0,
mappings=[
("id", "long", "user_id", "long"),
("name", "string", "user_name", "string"),
("value", "double", "amount", "double")
],
transformation_ctx="applymapping1"
)
# Upis transformisanih podataka nazad u 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()