برنامه نویسی

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

AWS Glue یک پلت فرم محاسباتی بدون سرور و رویداد محور است که توسط آمازون به عنوان بخشی از خدمات وب آمازون ارائه شده است. این یک سرویس محاسباتی است که کد را در پاسخ به رویدادها اجرا می کند و به طور خودکار منابع محاسباتی مورد نیاز آن کد را مدیریت می کند.

به عنوان یک سرویس محبوب ETL، Glue گزینه های متعددی را برای اتصال به پایگاه های داده مختلف، از جمله PostgreSQL، که یک RDBMS پرکاربرد است، ارائه می دهد.

چسب چندین راه برای تنظیم فرآیندهای ETL (Extract, Transform, Load) ارائه می دهد که در زیر نشان داده شده است:

ایجاد AWS Glue Job

با تنظیم بصری آن، انجام وظایف ETL بسیار آسان تر می شود.

جزئیات تنظیمات بصری

برای ایجاد یک کار ETL که به تبدیل داده ها از ورودی S3 به خروجی PostgreSQL کمک می کند، فقط به چند کلیک نیاز دارید.

جزئیات تنظیمات بصری 2

با این حال، این راه‌اندازی محدودیت‌های متعددی دارد، زیرا قبل از ایجاد یک کار 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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پس از آن، می توانید کار را شروع کنید و منتظر بمانید تا تمام شود. در صورت موفقیت، مطابق شکل زیر:

وضعیت کار چسب AWS

می توانید آخرین نتیجه را در posgresql خود بررسی کنید.

فکر می کنم فعلاً برای این مقاله همین است. در مورد افکار خود در زیر نظر دهید! با تشکر.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا