Middle+
Ի՞նչ փորձ ունեք AWS Glue, Antenna և Spark-ով աշխատելու վերաբերյալ։
sobes.tech AI
Պատասխան AI-ից
Ես աշխատել եմ AWS Glue-ով սերվերազուրկ ETL առաջադրանքների համար, օգտագործելով PySpark։ Կարգավորել եմ Glue-ի հրամանները S3 իրադարձությունների համար։ Օգտագործել եմ AWS Data Catalog-ը։
Antena-ի հետ փորձառություն չունեմ։
Հիմնականում աշխատել եմ Apache Spark-ով PySpark-ի միջոցով մեծ տվյալների մշակման համար։ Օգտագործել եմ Spark SQL-ը կառուցվածքային հարցումների համար և RDD API-ն ցածր մակարդակի գործողությունների համար։ Spark-ի տեղակայման փորձառություն ունեմ՝ տեղական կլաստերներ, YARN և Spark Kubernetes-ում։
Նմուշ պարզ ETL սցենարի PySpark-ում 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)
# 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()