روش عملی استفاده از چسب AWS با Postgresql

AWS Glue یک پلت فرم محاسباتی بدون سرور و رویداد محور است که توسط آمازون به عنوان بخشی از خدمات وب آمازون ارائه شده است. این یک سرویس محاسباتی است که کد را در پاسخ به رویدادها اجرا می کند و به طور خودکار منابع محاسباتی مورد نیاز آن کد را مدیریت می کند.
به عنوان یک سرویس محبوب ETL، Glue گزینه های متعددی را برای اتصال به پایگاه های داده مختلف، از جمله PostgreSQL، که یک RDBMS پرکاربرد است، ارائه می دهد.
چسب چندین راه برای تنظیم فرآیندهای ETL (Extract, Transform, Load) ارائه می دهد که در زیر نشان داده شده است:
با تنظیم بصری آن، انجام وظایف ETL بسیار آسان تر می شود.
برای ایجاد یک کار ETL که به تبدیل داده ها از ورودی S3 به خروجی PostgreSQL کمک می کند، فقط به چند کلیک نیاز دارید.
با این حال، این راهاندازی محدودیتهای متعددی دارد، زیرا قبل از ایجاد یک کار ETL با عملکرد مناسب، باید تمام گزینههای موجود را دنبال کنید.
اگر به دنبال انعطافپذیری بیشتر در پیکربندی هستید، میتوانید از تنظیمات اسکریپت استفاده کنید.
با تنظیم اسکریپت، می توانید مستقیماً از اسکریپت به منبع داده یا خروجی خود متصل شوید. برای انجام این کار، مطابق شکل زیر از تنظیمات تصویری به صفحه اسکریپت سوئیچ کنید:
برای کد، می توانید از اسکریپت های ساده مانند زیر استفاده کنید:
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
import boto3
# Initialize Glue context and 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)
# Read data from S3
s3_path="s3://your-S3-REPO/"
datasource = glueContext.create_dynamic_frame.from_options(
connection_type="s3",
connection_options={"paths": [s3_path]},
format="csv", # Adjust format as necessary
format_options={"withHeader": True, "separator": ","}
)
datasource.printSchema()
# Transform data if needed (this is a simple pass-through in this example)
transformed = ApplyMapping.apply(
frame = datasource,
mappings = [
("id", "string", "id", "int"),
("name", "string", "name", "string"),
("age", "string", "age", "int")
]
)
transformed.printSchema()
# Write data to PostgreSQL
glueContext.write_dynamic_frame.from_options(
frame = transformed,
connection_type = "postgresql",
connection_options = {
"url": "jdbc:postgresql://your-PostgresqlDB-Endpoint",
"dbtable": "your_table",
"user": "your-Posgresql-User",
"password": "your-Posgresql-Password"
}
)
# Commit the job
job.commit()
و برای ورودی، می توانید از یک فایل با فرمت CSV مانند این استفاده کنید:
id,name,age
1,John Doe,30
2,Jane Smith, 15
3,Bob Yellow,20
4,Roshan Brown,18
5,Bam Black,55
پس از آن، می توانید کار را شروع کنید و منتظر بمانید تا تمام شود. در صورت موفقیت، مطابق شکل زیر:
می توانید آخرین نتیجه را در posgresql خود بررسی کنید.
فکر می کنم فعلاً برای این مقاله همین است. در مورد افکار خود در زیر نظر دهید! با تشکر.