Middle+
AWS Glue, Antenna жана Spark менен иштөө тажрыйбаңыз кандай?
sobes.tech AI
AIден жооп
Мен AWS Glue менен серверсиз ETL тапшырмалары үчүн иштедим, PySpark колдонуп. Glue триггерлерин S3 окуяларына конфигурацияладым. AWS Data Catalog'ту колдонуп жатам.
Antenna менен тааныш эмесмин.
Негизинен, чоң маалыматтарды иштетүү үчүн PySpark аркылуу Apache Spark менен иштедим. Spark SQL'ду структураланган суроолор үчүн жана RDD API'ны төмөнкү деңгээлдеги операциялар үчүн колдонуп жатам. Sparkты жайгаштыруу боюнча тажрыйба: жергиликтүү кластерлер, YARN жана Kubernetes'те Spark.
AWS Glue үчүн жөнөкөй ETL скриптинин мисалы:
# 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'төн маалыматтарды окуу
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"
)
# Маалыматтарды түрлөргө бөлүү (мисалы: баардык колонкаларды тандоо жана кайра аталышы)
applymapping1 = ApplyMapping.apply(
frame=datasource0,
mappings=[
("id", "long", "user_id", "long"),
("name", "string", "user_name", "string"),
("value", "double", "amount", "double")
],
transformation_ctx="applymapping1"
)
# Түрлөргө бөлүнгөн маалыматтарды кайра 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()