AWS Glue: ETL และแค็ตตาล็อกข้อมูล
เรียกใช้งาน ETL แบบไร้เซิร์ฟเวอร์ด้วย AWS Glue ลงทะเบียนโครงสร้างตารางใน Glue Data Catalogue และรวบรวมข้อมูลใหม่โดยอัตโนมัติ
AWS Glue: ETL และแค็ตตาล็อกข้อมูล เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
AWS Glue คืออะไร
AWS Glue คือบริการ ETL (Extract, Transform, Load) แบบไร้เซิร์ฟเวอร์ที่มีการจัดการเต็มรูปแบบ คุณไม่ต้องจัดเตรียมหรือจัดการเซิร์ฟเวอร์ใด ๆ เพราะ Glue จะจัดสรรผู้ปฏิบัติงาน Spark หรือ Python โดยอัตโนมัติเมื่อมีการเรียกใช้งาน Glue ประกอบด้วยสองส่วนหลัก ได้แก่ เครื่องมือ ETL สำหรับงานแปลงข้อมูล และ Data Catalogue สำหรับจัดเก็บข้อมูลเมตาเกี่ยวกับแหล่งข้อมูลและเป้าหมายของคุณ
คำอธิบาย Glue Data Catalogue
Glue Data Catalogue คือคลังข้อมูลเมตาส่วนกลางที่เข้ากันได้กับ Apache Hive Metastore โดยจัดเก็บฐานข้อมูล ตาราง คำจำกัดความของคอลัมน์ ชนิดข้อมูล และข้อมูลพาร์ติชัน บริการอย่าง Athena, Redshift Spectrum และ EMR ต่างใช้ Data Catalogue เดียวกัน ทำให้เป็นแหล่งข้อมูลหลักที่ระบุว่ามีข้อมูลใดอยู่บ้างและข้อมูลนั้นอยู่ที่ใดใน S3
# List databases in the Glue Data Catalogue
aws glue get-databases --query 'DatabaseList[*].Name'
# List tables in a database
aws glue get-tables --database-name my_db --query 'TableList[*].Name'Glue Crawlers: ค้นพบสคีมาโดยอัตโนมัติ
Glue Crawler เชื่อมต่อกับแหล่งจัดเก็บข้อมูล (S3, JDBC, DynamoDB) สุ่มตัวอย่างข้อมูล และอนุมานสคีมาและโครงสร้างพาร์ติชันโดยอัตโนมัติ จากนั้นจะเขียนหรืออัปเดตคำจำกัดความของตารางใน Data Catalogue คุณสามารถเรียกใช้ Crawlers ตามกำหนดเวลาหรือเมื่อจำเป็นได้ นอกจากนี้ยังรองรับ การรวบรวมข้อมูลแบบเพิ่ม เพื่อให้ประมวลผลเฉพาะพาร์ติชันใหม่ในการเรียกใช้ครั้งถัดไป
# Create and start a Glue Crawler via CLI
aws glue create-crawler \
--name sales-crawler \
--role arn:aws:iam::123456789012:role/GlueRole \
--database-name my_db \
--targets '{"S3Targets": [{"Path": "s3://my-data-lake-123/landing/sales/"}]}'
aws glue start-crawler --name sales-crawlerการเขียนงาน Glue ETL
งาน Glue ETL คือสคริปต์ PySpark หรือ Scala Spark ที่อ่านข้อมูลจากแหล่งข้อมูล ใช้การแปลงข้อมูลผ่าน API DynamicFrame และเขียนผลลัพธ์ไปยังเป้าหมาย DynamicFrames เพิ่มความยืดหยุ่นด้านสคีมาให้กับ Spark DataFrames โดยจัดการชนิดข้อมูลที่ไม่สอดคล้องกันและ JSON แบบซ้อนกันได้โดยอัตโนมัติ คุณสามารถสร้างสคริปต์งานพื้นฐานจากเครื่องมือแก้ไขแบบภาพของ Glue Studio ได้
# Minimal Glue PySpark ETL job
from awsglue.context import GlueContext
from awsglue.transforms import *
from pyspark.context import SparkContext
sc = SparkContext()
glueContext = GlueContext(sc)
# Read from Data Catalogue table
source = glueContext.create_dynamic_frame.from_catalog(
database='my_db', table_name='raw_sales')
# Drop null order_id rows
cleaned = Filter.apply(frame=source, f=lambda r: r['order_id'] is not None)
# Write Parquet to curated zone
glueContext.write_dynamic_frame.from_options(
frame=cleaned,
connection_type='s3',
connection_options={'path': 's3://my-data-lake-123/curated/sales/'},
format='parquet')ผู้ปฏิบัติงาน Glue และ DPU
Glue จัดสรรความจุในรูปของ Data Processing Units (DPUs) โดย DPU หนึ่งหน่วยเท่ากับ 4 vCPUs และหน่วยความจำ 16 GB คุณเลือกประเภทผู้ปฏิบัติงาน (G.1X, G.2X หรือ G.025X สำหรับการสตรีมแบบยืดหยุ่นหรือ Spark) และจำนวนผู้ปฏิบัติงานได้ สำหรับงานขนาดเล็ก ให้ใช้ประเภทงาน G.025X Python Shell ซึ่งใช้หนึ่งในสี่ของ DPU และคุ้มค่าอย่างมากสำหรับการแปลงข้อมูลแบบง่าย
# Create a Glue job with G.1X workers
aws glue create-job \
--name clean-sales \
--role arn:aws:iam::123456789012:role/GlueRole \
--command '{"Name": "glueetl", "ScriptLocation": "s3://scripts/clean_sales.py", "PythonVersion": "3"}' \
--worker-type G.1X \
--number-of-workers 5 \
--glue-version '4.0'เวิร์กโฟลว์และทริกเกอร์ของ Glue
Glue Workflow เชื่อม Crawlers และงานต่าง ๆ เข้าด้วยกันเป็นกราฟการพึ่งพา Crawler จะค้นพบข้อมูลใหม่ จากนั้นเมื่อทำงานเสร็จจะทริกเกอร์งานหนึ่ง แล้วต่อด้วยอีกงานหนึ่งไปเรื่อย ๆ ทริกเกอร์ อาจทำงานตามกำหนดเวลา (cron), ตามเหตุการณ์ (เมื่อมีการเรียกใช้) หรือตามเงื่อนไข (ทำงานเมื่องานสำเร็จหรือล้มเหลว) เวิร์กโฟลว์ช่วยให้คุณมี DAG แบบภาพสำหรับกระบวนการ ETL โดยไม่ต้องใช้บริการจัดการลำดับงานแยกต่างหาก
# Create a schedule trigger that starts a job every night at 2 AM UTC
aws glue create-trigger \
--name nightly-clean \
--type SCHEDULED \
--schedule 'cron(0 2 * * ? *)' \
--actions '[{"JobName": "clean-sales"}]' \
--start-on-creationGlue Studio: เครื่องมือสร้าง ETL แบบภาพ
Glue Studio มีอินเทอร์เฟซแบบลากแล้ววางสำหรับออกแบบงาน ETL ในรูปแบบกราฟิก โดยไม่ต้องเขียนโค้ด PySpark ด้วยตนเอง คุณเชื่อมโหนดแหล่งข้อมูล (S3, ตาราง Catalogue, JDBC) ผ่านโหนดแปลงข้อมูล (ตัวกรอง การรวม การสรุปรวม Python แบบกำหนดเอง) ไปยังโหนดเป้าหมาย Glue Studio จะสร้างสคริปต์ Spark โดยอัตโนมัติ และยังมีแดชบอร์ดการเรียกใช้งานเพื่อเฝ้าติดตามสถานะการทำงานและตัวชี้วัดคุณภาพข้อมูล
คุณภาพข้อมูลของ Glue
AWS Glue Data Quality (DQDL — Data Quality Definition Language) ช่วยให้คุณเขียนกฎเพื่อตรวจสอบข้อมูลขณะที่ข้อมูลไหลผ่านงาน ETL กฎสามารถตรวจสอบอัตราค่าว่าง ช่วงของค่า ความถูกต้องของการอ้างอิง และความไม่ซ้ำกัน หากข้อมูลไม่ผ่านกฎคุณภาพ Glue สามารถหยุดงานหรือส่งระเบียนที่ไม่ถูกต้องไปยังเส้นทางกักกันใน S3 เพื่อให้ตรวจสอบด้วยตนเอง แทนที่จะปล่อยให้ข้อมูลเสียหายผ่านไปยังโซน Curated โดยไม่มีการแจ้งเตือน
# DQDL rule example for Glue Data Quality
# Reject rows where order_total is negative or null
Rules = [
IsComplete 'order_total',
ColumnValues 'order_total' >= 0
]Glue เปรียบเทียบกับตัวเลือก ETL อื่น
สำหรับการสอบ SAA-C03 ควรทราบว่าเมื่อใดจึงควรแนะนำ Glue แทนทางเลือกอื่น ใช้ Glue สำหรับ Spark ETL แบบไร้เซิร์ฟเวอร์และการผสานรวมกับ Data Catalogue ใช้ AWS Data Pipeline เพื่อจัดการลำดับงานการเคลื่อนย้ายข้อมูลแบบเก่าเป็นหลัก ใช้ Amazon EMR เมื่อจำเป็นต้องกำหนดค่าคลัสเตอร์ Hadoop/Spark เองหรือต้องรองรับงานที่ทำงานเป็นเวลานาน ใช้ Lambda สำหรับการแปลงข้อมูลขนาดเล็กที่ขับเคลื่อนด้วยเหตุการณ์และมีน้ำหนักเบา
JDBC และแหล่งข้อมูลที่ไม่ใช่ S3
Glue สามารถเชื่อมต่อกับฐานข้อมูลเชิงสัมพันธ์ผ่าน การเชื่อมต่อ JDBC ได้แก่ RDS, Aurora, Redshift หรือฐานข้อมูลภายในองค์กรผ่าน การเชื่อมต่อ Glue VPC คุณกำหนดการเชื่อมต่อด้วย URL ของ JDBC ข้อมูลรับรองจาก Secrets Manager และกลุ่มความปลอดภัยของ VPC จากนั้น Glue จะใช้อินเทอร์เฟซเครือข่ายเฉพาะที่วางอยู่ภายในซับเน็ตของ VPC เพื่อเข้าถึงปลายทางฐานข้อมูลส่วนตัวโดยไม่ต้องผ่านอินเทอร์เน็ตสาธารณะ
# Create a Glue JDBC connection to RDS Aurora
aws glue create-connection \
--connection-input '{
"Name": "aurora-prod",
"ConnectionType": "JDBC",
"ConnectionProperties": {
"JDBC_CONNECTION_URL": "jdbc:mysql://aurora-cluster.cluster-xyz.us-east-1.rds.amazonaws.com:3306/sales",
"SECRET_ID": "arn:aws:secretsmanager:us-east-1:123:secret:rds-creds"
},
"PhysicalConnectionRequirements": {
"SubnetId": "subnet-abc123",
"SecurityGroupIdList": ["sg-xyz456"],
"AvailabilityZone": "us-east-1a"
}
}'บุ๊กมาร์ก: การประมวลผลแบบเพิ่ม
ตามค่าเริ่มต้น งาน Glue จะประมวลผลทุกระเบียนใหม่ทุกครั้งที่ทำงาน บุ๊กมาร์กงาน Glue จะติดตามว่าไฟล์นำเข้าใดถูกประมวลผลแล้ว ดังนั้นการทำงานครั้งถัดไปจะรับเฉพาะข้อมูลใหม่ บุ๊กมาร์กมีความสำคัญสำหรับแหล่งข้อมูล S3 แบบเพิ่มอย่างเดียว ซึ่งคำนำหน้าเดิมได้รับไฟล์ใหม่ทุกวัน เปิดใช้บุ๊กมาร์กในพารามิเตอร์ของงานด้วย --job-bookmark-option job-bookmark-enable
# Start Glue job with bookmark enabled
aws glue start-job-run \
--job-name clean-sales \
--arguments '{"--job-bookmark-option": "job-bookmark-enable"}'ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า AWS Glue ให้บริการ ETL แบบไร้เซิร์ฟเวอร์ผ่าน PySpark และ API ของ DynamicFrame, Glue Crawlers ค้นพบสคีมาโดยอัตโนมัติและเติมข้อมูลลงใน Data Catalogue และ Glue Bookmarks ช่วยให้ประมวลผลข้อมูลใหม่ใน S3 แบบเพิ่มเฉพาะส่วนได้ บทถัดไป เราจะสำรวจ Amazon Athena สำหรับการเรียกใช้คำสั่ง SQL แบบไร้เซิร์ฟเวอร์กับข้อมูลใน S3 โดยตรง
คำถามที่พบบ่อย
บทเรียน “AWS Glue: ETL และแค็ตตาล็อกข้อมูล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “AWS Glue: ETL และแค็ตตาล็อกข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “AWS Glue: ETL และแค็ตตาล็อกข้อมูล”
เรียกใช้งาน ETL แบบไร้เซิร์ฟเวอร์ด้วย AWS Glue ลงทะเบียนโครงสร้างตารางใน Glue Data Catalogue และรวบรวมข้อมูลใหม่โดยอัตโนมัติ คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “AWS Glue: ETL และแค็ตตาล็อกข้อมูล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม
ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างดาต้าเลคบน S3
- AWS Glue: ETL และแค็ตตาล็อกข้อมูล
- Amazon Athena: SQL แบบไร้เซิร์ฟเวอร์บน S3
- Kinesis Streams, Firehose และการวิเคราะห์แบบเรียลไทม์