Middle+
Milline on teie kogemus AWS Glue, Antenna ja Sparkiga?
sobes.tech AI
Vastus AI-lt
AWS Glue-ga bezserveru ETL uzdevumu darbam, izmantojot PySpark. Glue trigeru konfigurēšana S3 notikumiem. Izmantoja AWS Data Catalog.
Ar Antenna nav nācies saskarties.
Galvenokārt ar Apache Spark strādāju caur PySpark, lielu datu apstrādei. Pielietoju Spark SQL strukturētiem vaicājumiem un RDD API zemākā līmeņa operācijām. Spark izvietošanas pieredze: lokāli klasteri, YARN un Spark uz Kubernetes.
Piemērs vienkāršam ETL skriptam PySpark, izmantojot 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)
# Datu lasīšana no 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"
)
# Datu transformācija (piemērs: kolonnu izvēle un pārsaukšana)
applymapping1 = ApplyMapping.apply(
frame=datasource0,
mappings=[
("id", "long", "user_id", "long"),
("name", "string", "user_name", "string"),
("value", "double", "amount", "double")
],
transformation_ctx="applymapping1"
)
# Transformēto datu ierakstīšana atpakaļ 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()