---
# System prepended metadata

title: AWS Glue 簡易介紹
tags: [Glue, AWS]

---

# AWS Glue 簡易介紹

## 一、概述

AWS Glue 是亞馬遜雲端運算服務（AWS）所提供的無伺服器（serverless）資料整合服務，設計目的是為了簡化、加速並自動化大規模資料處理與 ETL（Extract, Transform, Load）工作流程。

* ETL 簡易介紹：
    * 資料提取 (Extract)：從各種資料來源 (例如 S3、RDS、DynamoDB、Redshift 或其他外部資料庫、API) 提取資料。
    * 資料轉換 (Transform)：清理、轉換和豐富資料以滿足分析或儲存需求。
    * 資料載入 (Load)：將處理後的資料載入目標系統，例如 Redshift、S3、Athena 或其他資料庫。

故使用者無需部署或管理任何基礎設施，即可在雲端中快速建構適合自己的 Data Pipeline，並將處理後資料匯入分析平台或資料倉儲中做後續使用。

## 二、核心組件

### 1. Crawlers (資料爬蟲)
* 功能：自動掃描資料來源，推斷資料結構 (schema) 並將元資料儲存到 Data Catalog 中。
* 運作方式：
    * 使用者指定資料來源 (如 S3、JDBC 資料庫)。
    * Crawler 自動判斷資料格式和結構，生成表格定義。
    * 可設定排程，定期更新元資料已反映資料變化。
* 特點：快速建立資料目錄，無需手動定義 schema。
    
### 2. Data Catalog (資料目錄)
* 功能：Data Catalog 是一個集中式元資料儲存庫，用於儲存資料的結構化資訊 (如表格定義、欄位型別、資料來源等)。
* 用途：作為 AWS Glue 的核心，Data Catalog 為其他 AWS 服務 (如 Athena、Redshift Spectrum、EMR 等) 提供元資料支援，方便查詢和管理資料。
* 特點：
    * 支援自動生成元資料 (透過 Glue Crawlers)。
    * 與 [Apache Hive Metastore](https://hive.apache.org/) 相容。
    * 支援多種資料格式 (CSV、JSON、Parquet、Avro 等)。
    * 提供版本控制，追蹤資料結構的變化。

### 3. ETL Jobs
* 功能：執行資料提取、轉換和載入的任務。
* 程式語言：
    * 支援 Python (基於 PySpark)。
    * 支援 Scala (基於 Spark)。
    * 提供內建轉換函數 (如過濾、聚合、聯接、格式轉換)。
* 執行環境：基於 Apache Spark 的分散式處理，適合大規模資料集。

### 4. Trigger (觸發器)
* 功能：用於自動化 ETL 作業的執行。
* 類型：
    * Schedule Trigger (排程觸發)：按時間表 (如每天、每小時) 執行作業。
    * Event Trigger (事件觸發)：根據特定事件 (如 S3 新增檔案) 觸發作業。
    * Condition Trigger (條件觸發)：當其他作業完成後觸發。

### 5. Workflows (工作流程)
* 功能：將多個 Crawlers 和 ETL Job 組合為一個協調的工作流程。
* 用途：管理複雜的資料管道，確保作業按順序或依賴關係執行。

### 6. Glue Studio (視覺化工具)
* 功能：提供圖形化介面，允許使用者以拖拉方式設計 ETL 流程，無需編寫程式碼。
* 優勢：降低技術門檻，適合非程式設計背景的使用者。

### 7. Glue DataBrew (資料準備工具)
* 功能：專為資料清理和準備設計，提供視覺化工具來執行資料處理、標準化、異常檢測等操作。
* 用途：更偏資料分析師工具，屬於補充性服務，若有需求才做使用，不影響整體工作流邏輯。

## 三、工作流程範例
![image](https://hackmd.io/_uploads/HJ8IEiR7lg.png)

架構圖來源：https://docs.aws.amazon.com/zh_tw/glue/latest/dg/components-key-concepts.html

### 1.建立資料目錄
* 配置 Crawler，掃描資料來源 (如 S3、RDS)。
* 將推斷的 schema 儲存到 Data Catalog。

### 2.設計 ETL 作業
* 使用 Glue Studio 或手動編寫 Python/Scala 程式碼。
* 定義資料來源、轉換邏輯和目標儲存位置。

### 3.設定觸發器和工作流程
* 配置觸發器已自動執行作業。
* 組合多個作業形成工作流程。

### 4.執行與監控
* 執行 ETL 作業，AWS Glue 自動分配資源。
* 使用 [Amazon CloudWatch](https://aws.amazon.com/tw/cloudwatch/) 監控作業執行狀態和效能。

### 5.資料查詢與分析
* 透過 Data Catalog 與其他 AWS 服務 (如 Athena、Redshift) 整合，進行資料查詢和分析。

## 四、常見應用場景

### 1.資料湖構建
* 從多個來源 (結構化/非結構化) 提取資料，轉換為統一格式 (如 Parquet)，儲存到 S3 資料湖。
* 與 [AWS Lake Formation](https://aws.amazon.com/tw/lake-formation/) 結合，實現資料湖治理。

### 2.資料倉儲載入
* 將資料轉換後載入 [Amazon Redshift](https://aws.amazon.com/tw/redshift/) 或其他資料倉儲，支援 [Amazon QuickSight](https://aws.amazon.com/tw/quicksight/?trk=3f83a749-ef31-4aad-aad6-363c666e9181&sc_channel=ps&ef_id=CjwKCAjwvO7CBhAqEiwA9q2YJaHQct_pupvXlvWyzRegj2QRG1jXwBd1t9ZlSWXHEqmSPUXdu-r9uhoC7LgQAvD_BwE:G:s&s_kwcid=AL!4422!3!651541934794!e!!g!!quicksight!19828212417!147297605659&gad_campaignid=19828212417&gbraid=0AAAAADjHtp_DZ1eeKd-GcSDerlSJTH5n3&gclid=CjwKCAjwvO7CBhAqEiwA9q2YJaHQct_pupvXlvWyzRegj2QRG1jXwBd1t9ZlSWXHEqmSPUXdu-r9uhoC7LgQAvD_BwE&amazon-quicksight-whats-new.sort-by=item.additionalFields.postDateTime&amazon-quicksight-whats-new.sort-order=desc) 等 BI 可視化報表分析。

### 3.即時資料處理
* 透過 [AWS Glue Streaming](https://docs.aws.amazon.com/glue/latest/dg/streaming-chapter.html) 處理來自 [Amazon Kinesis](https://aws.amazon.com/tw/kinesis/) 或 [Amazon Managed Streaming for Apache Kafka](https://aws.amazon.com/tw/msk/) 的即時資料流。

### 4.資料清理與標準化
* 使用 [AWS Glue DataBrew](https://aws.amazon.com/tw/glue/features/databrew/) 清理不一致的資料，準備分析或機器學習模型，為 No Code 的資料應用服務。

### 5.資料整合和遷移
* 將內部部署資料庫 (透過 JDBC) 遷移到 AWS 雲端。
* 整合來自不同系統的資料 (如 CRM、ERP、日誌資料)。

### 6.機器學習資料準備
* 清理和轉換資料，為 [Amazon SageMaker](https://aws.amazon.com/tw/sagemaker/?trk=346c6f6e-fbca-42ed-9c22-666d71fff455&sc_channel=ps&ef_id=CjwKCAjwvO7CBhAqEiwA9q2YJXqc0TIND-cGj2B3TQT5O4yidOpinUvBg5fPF-spVfXjMaht8oN1_RoCoXkQAvD_BwE:G:s&s_kwcid=AL!4422!3!639434067723!e!!g!!sagemaker!19155106685!149379722812&gad_campaignid=19155106685&gbraid=0AAAAADjHtp8ogHtPFllENa0ZLZJYq5eal&gclid=CjwKCAjwvO7CBhAqEiwA9q2YJXqc0TIND-cGj2B3TQT5O4yidOpinUvBg5fPF-spVfXjMaht8oN1_RoCoXkQAvD_BwE) 或其他 ML 平台提供高品質資料集。

## 五、計費方式
> 依照文章撰寫當下 Glue 計費形式介紹

### 1.Crawler
* 按執行時間和使用的 DPU (Data Processing Unit) 計費。
    * DPU（資料處理單位）是 AWS Glue 中的計算資源單位，全名為 Data Processing Unit。
    * DPU 是 AWS 為 Glue Job、Crawlers 等運算任務所使用的計費與資源分配單位。
    * 每個 DPU 約等於：4 vCPU (虛擬 CPU)、16GB RAM。

### 2.ETL Job
* 按作業執行的 DPU 小時計費。

### 3.Data Catalog 儲存
* 按儲存的元資料物件數量計費。

### 4. 費用參考連結
* AWS Glue pricing：https://aws.amazon.com/glue/pricing/?nc1=h_ls

## 六、注意事項

### 1.學習曲線較高
* 對於進階轉換或自訂邏輯，需熟悉 PySpark 或 Scala。
* Glue Studio 雖然簡化操作，但複雜需求仍須編寫程式碼。

### 2.成本考量
* 大規模作業或頻繁的 Crawler 執行可能導致成本上升。
* 使用者需優化作業以控制費用。

### 3.效能限制
* 對於極高吞吐量的即時資料流，Glue Streaming 可能不如專用工具 (如 Flink)。
* 啟動時間較長 (Spark 環境初始化)，不適合超低延遲場景。

### 4.功能限制
* 某些複雜轉換可能需要外部工具 (如 AWS Lambda 或 EMR )。
* Data Catalog 的功能相對簡單，對於進階元資料管理需結合 Lake Formation。

## 七、總結
1. 簡化基礎設施管理，學習曲線適中：
AWS 託管服務免除了自行部署資料基礎設施的負擔，讓使用者專注於資料處理邏輯。雖然初期學習曲線較陡，但熟悉服務功能後，使用體驗將變得簡單且高效。

2. 靈活支援多樣化資料與應用場景：
該服務能處理結構化、半結構化及非結構化資料，並支援批次處理（Batch）與串流處理（Streaming）等多種應用場景，極具靈活性與便利性。

3. 評估場景以應對潛在限制：
儘管 AWS 託管服務功能強大，但受限於其底層配置，對於高度複雜或特殊化的場景可能存在限制。建議在使用前詳細評估應用場景，確保服務滿足需求並避免潛在的技術瓶頸。