Sobes.tech
Middle+

Kokia jūsų patirtis dirbant su AWS Glue, Antenna ir Spark?

sobes.tech AI

Atsakymas iš AI

Darbo su AWS Glue serverinių ETL užduočių vykdymui naudojant PySpark. Glue trigerių nustatymas S3 įvykiams. Naudotas AWS Data Catalog.

Neturėjau patirties su Antenna.

Pagrindinis darbas su Apache Spark per PySpark, didelių duomenų apdorojimui. Naudojau Spark SQL struktūruotiems užklausoms ir RDD API žemesnio lygio operacijoms. Spark diegimo patirtis: vietiniai klasteriai, YARN ir Spark on Kubernetes.

Pavyzdys paprasto ETL skripto PySpark naudoti 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)

# Duomenų nuskaitymas iš 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"
)

# Duomenų transformacija (pavyzdys: stulpelių pasirinkimas ir pervardijimas)
applymapping1 = ApplyMapping.apply(
    frame=datasource0,
    mappings=[
        ("id", "long", "user_id", "long"),
        ("name", "string", "user_name", "string"),
        ("value", "double", "amount", "double")
    ],
    transformation_ctx="applymapping1"
)

# Transformuotų duomenų įrašymas atgal į 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()