Site logo
Tác giả
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Ngày xuất bản
Ngày xuất bản

AWS Glue là gì? Hướng dẫn toàn tập về dịch vụ ETL và Data Catalog trong AWS

AWS Glue là dịch vụ ETL (Extract – Transform – Load) serverless của Amazon Web Services, giúp bạn chuẩn bị và tích hợp dữ liệu cho các mục đích phân tích, machine learning, và kho dữ liệu.

Thay vì phải tự xây dựng pipeline thủ công, AWS Glue tự động phát hiện, chuyển đổi, và tải dữ liệu từ nhiều nguồn (như S3, RDS, Redshift, DynamoDB, hoặc các cơ sở dữ liệu on-premises).


Tính năng chính

  1. Serverless ETL

    • Không cần quản lý máy chủ — Glue tự động cung cấp tài nguyên cần thiết để xử lý dữ liệu.
  2. Data Catalog trung tâm

    • Lưu trữ metadata (schema, partition, format, v.v.) cho tất cả dữ liệu, giúp dễ dàng tìm kiếm và truy vấn với Athena hoặc Redshift Spectrum.
  3. Tự động phát hiện schema (Crawler)

    • Glue Crawler quét dữ liệu trong S3, RDS, hoặc JDBC và tự động xác định cấu trúc bảng.
  4. Job & Workflow Orchestration

    • Cho phép lập lịch hoặc trigger các ETL job bằng Python/Scala scripts.
  5. Hỗ trợ Apache Spark

    • Xây dựng ETL job với Spark để xử lý dữ liệu lớn hiệu năng cao.
  6. Tích hợp với Glue Studio & DataBrew

    • Glue Studio giúp thiết kế pipeline bằng giao diện kéo-thả (no-code).
    • DataBrew giúp làm sạch dữ liệu (data cleaning) trực quan.

Cách hoạt động

Quy trình tổng quát của AWS Glue bao gồm:

  1. Data Discovery (Khám phá dữ liệu)

    • Crawler quét dữ liệu từ nguồn (S3, RDS, v.v.) để tạo metadata trong Glue Data Catalog.
  2. Data Preparation (Chuẩn bị dữ liệu)

    • Người dùng viết hoặc tạo ETL job (bằng Python/Scala) để làm sạch, hợp nhất, và chuẩn hóa dữ liệu.
  3. Data Loading (Tải dữ liệu)

    • Sau khi xử lý, dữ liệu được lưu lại vào S3, Redshift, hoặc Data Lake để phục vụ phân tích.
  4. Integration (Tích hợp)

    • Glue tích hợp trực tiếp với Athena, Redshift, EMR, và QuickSight.

🚀 Những gì AWS Glue có thể làm

  • Tự động phát hiện và tạo schema từ dữ liệu thô trong S3.
  • Làm sạch và chuyển đổi dữ liệu để sẵn sàng cho phân tích hoặc ML.
  • Xây dựng data pipeline tự động theo lịch hoặc sự kiện.
  • Kết nối đa nguồn dữ liệu: S3, RDS, DynamoDB, Redshift, JDBC, v.v.
  • Chuẩn hóa dữ liệu theo tiêu chuẩn cho Data Lake.

💡 Use Cases

Use Case Mô tả
Data Lake ETL Chuẩn hóa dữ liệu từ nhiều nguồn để nạp vào Data Lake.
Data Preparation cho ML Làm sạch và feature engineering trước khi huấn luyện mô hình.
Log Aggregation Kết hợp log từ nhiều hệ thống và chuyển thành định dạng Parquet.
Schema Discovery Tự động tạo bảng và metadata cho Athena hoặc Redshift.
Data Warehouse Load Chuyển dữ liệu từ S3 sang Redshift bằng workflow tự động.

⚖️ So sánh: AWS Glue vs Similar Services

Dịch vụ Mục tiêu Điểm nổi bật Khi nên dùng
AWS Glue ETL + Data Catalog Serverless, tự động phát hiện schema Khi bạn cần pipeline ETL tự động
AWS Athena SQL Query Engine Query trực tiếp trên S3 bằng SQL Khi bạn chỉ cần truy vấn, không cần ETL
AWS Redshift Data Warehouse Lưu trữ và phân tích dữ liệu khối lượng lớn Khi bạn cần phân tích chuyên sâu, hiệu năng cao
AWS EMR Big Data Cluster Tùy chỉnh Spark/Hadoop cluster Khi cần kiểm soát chi tiết hơn ETL hoặc ML pipeline

👉 Tóm lại:

  • Glue = ETL + Metadata + Automation
  • Athena = SQL Query
  • Redshift = Data Warehouse
  • EMR = Custom Big Data Cluster

🧱 Best Practices (Thực hành tốt nhất)

  1. Dùng định dạng Parquet/ORC để giảm chi phí lưu trữ và tăng hiệu suất.
  2. Tạo partition dữ liệu theo ngày/tháng để tăng tốc độ truy vấn.
  3. Tận dụng Glue Data Catalog để đồng bộ schema cho Athena, Redshift.
  4. Sử dụng Job Bookmarking để tránh xử lý trùng dữ liệu.
  5. Tích hợp workflow với EventBridge hoặc Step Functions để tự động hóa pipeline.
  6. Theo dõi và debug với Glue Console & CloudWatch Logs.

🧰 Example (Ví dụ minh họa)

Ví dụ: Bạn có dữ liệu bán hàng lưu trong S3: s3://company-data/sales/raw/2025/10/

Bước 1 – Tạo Crawler:

  • Chọn nguồn dữ liệu (S3 bucket)
  • Chạy crawler → tạo bảng sales_raw trong Glue Data Catalog

Bước 2 – Tạo ETL Job (Python):

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from pyspark.context import SparkContext

args = getResolvedOptions(sys.argv, ['JOB_NAME'])
glueContext = GlueContext(SparkContext.getOrCreate())

datasource = glueContext.create_dynamic_frame.from_catalog(database="sales_db", table_name="sales_raw")

transformed = ApplyMapping.apply(
    frame=datasource,
    mappings=[
        ("order_id", "string", "order_id", "string"),
        ("amount", "double", "amount", "double"),
        ("region", "string", "region", "string"),
    ]
)

glueContext.write_dynamic_frame.from_options(
    frame=transformed,
    connection_type="s3",
    connection_options={"path": "s3://company-data/sales/processed/"},
    format="parquet"
)

Bước 3 – Tự động chạy job hằng ngày bằng Glue Trigger hoặc EventBridge.


🏁 Kết luận

AWS Glue là nền tảng ETL và Data Catalog mạnh mẽ giúp doanh nghiệp tự động hóa toàn bộ quá trình chuẩn bị dữ liệu — từ phát hiện, chuyển đổi đến nạp dữ liệu.

Khi kết hợp với Athena (truy vấn), Redshift (phân tích chuyên sâu), và QuickSight (báo cáo), Glue trở thành trung tâm của hệ sinh thái Data Lake trên AWS.


Tóm gọn:

AWS Glue giúp bạn “biến dữ liệu thô thành dữ liệu sẵn sàng phân tích” — một cách tự động, serverless, và hiệu quả chi phí.