Middle+
AWS Glue, Antenna və Spark ilə iş təcrübəniz nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Serverless ETL tapşırıqları üçün AWS Glue ilə işlədim, PySpark istifadə edərək. Glue triggerlərini S3 hadisələrinə konfiqurasiya etdim. AWS Data Catalog-dan istifadə etdim.
Antenna ilə tanış deyiləm.
Əsasən, böyük məlumatların emalı üçün PySpark vasitəsilə Apache Spark ilə işlədim. Spark SQL istifadə edərək strukturlaşdırılmış sorğular və RDD API ilə aşağı səviyyəli əməliyyatlar həyata keçirdim. Sparkın yerləşdirilməsi təcrübəm: yerli klasterlər, YARN və Kubernetes üzərində Spark.
AWS Glue üçün sadə ETL skriptinin nümunəsi:
# 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)
# S3-dən məlumat oxumaq
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"
)
# Məlumatların transformasiyası (misal: sütunların seçilməsi və adlarının dəyişdirilməsi)
applymapping1 = ApplyMapping.apply(
frame=datasource0,
mappings=[
("id", "long", "user_id", "long"),
("name", "string", "user_name", "string"),
("value", "double", "amount", "double")
],
transformation_ctx="applymapping1"
)
# Transformasiya olunmuş məlumatların S3-ə yazılması
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()