AWS - Glue


簡介

AWS Glue 是一種資料多功能工具,能處理 Stream 與 Batch 資料整合,AWS Glue 跑 ETL(Extract, Transform, Loading) 在 Apache Spark 上面,這些工作可以是配置或是管理在你的帳號上

Glue 主要提供以下功能

  • AWS Glue 資料目錄,用於資料發現和組織
  • AWS Glue DataBrew 無程式碼服務,用於資料準備和清理
  • AWS Glue ETL 作業,用於建立或編輯資料轉換作業
  • AWS Glue 工作流程,用於建置和監控資料管道

Glue Data stores

透過 Glue 使用者可以從多個系統或資料庫讀取與寫入資料。Glue 可以與 S3 或 Lake Formation, DynamoDB, RDS, Redshift 等做整合,除此之外還能跟第三方函式庫 Java JDBC 進行資料庫連接,Mongo 及其他 Market Place 連接器,像是 Apache Spark 外掛程式 包含 Snowflake, Google Cloud,BigQuery,Teradata 等

串流方面,也能與 Kinesis Data Streams,MSK 以及 Apache Kafka 整合

image


Glue Data Catalog

專門儲存資料的 Metadata 與資料結構,客戶可以儲存其表定義和實體位置,新增業務相關屬性,並追蹤這些資料隨時間的變化。

資料目錄還提供與 Amazon Athena、Amazon EMR 和 Amazon Redshift Spectrum 的開箱即用整合。將資料表定義新增至資料目錄後,它們可用於 ETL,並且可在 Athena、Amazon EMR 和 Redshift Spectrum 中隨時查詢。 AWS Glue 使用者可以對這些服務中駐留的資料擁有統一的視圖。

AWS Lake Formation 與 AWS Glue 使用共用基礎設施。這包括控制台控制項、ETL 程式碼建立和作業監控、通用資料目錄以及無伺服器架構。 Lake Formation 包含 AWS Glue 的功能,並提供了旨在協助建置、保護和管理資料湖的附加功能。

將資料存儲元資料新增至資料目錄

客戶可以透過以下方式將表定義新增至資料目錄:

  • 執行連接到一個或多個資料儲存的爬蟲程序,確定資料結構,並將表寫入資料目錄。
  • 使用 AWS Glue 主控台在資料目錄中手動建立表格。
  • 使用 AWS Glue API 中的 CreateTable 操作在資料目錄中建立表格。
  • 使用 AWS CloudFormation 範本。
  • 遷移 Apache Hive 元儲存。

AWS Glue Crawler to S3 流程

image

  1. AWS 客戶啟動了 Crawler。Crawler 連接到作為資料儲存的 S3 儲存桶。某些資料儲存需要連接屬性才能存取爬網程序。
  2. 爬蟲程式使用 Data Classifier 來 Inferrence 資料儲存的格式和架構。 AWS Glue 內建了 JSON 格式等分類器。 AWS 客戶也可以建立自己的自訂分類器。
    • Crawler 首先在資料儲存上執行 Built-in Classifiers 清單。如果分類器在處理過程中傳回確定性 = 1.0,則表示它 100% 確定可以建立正確的架構。然後,AWS Glue 會使用該分類器的輸出。
    • 如果在 Custom Classifier 清單中未找到匹配項,爬蟲程式將執行內建分類器清單。如果沒有分類器傳回大於 0.0 的確定性,AWS Glue 將傳回預設分類字串「未知」。
  3. 當 AWS Glue Crawler 掃描 S3 並偵測到儲存桶中的多個資料夾時,它會決定資料夾結構中資料表的根目錄以及哪些資料夾是資料表的分割區。當資料夾層級的大多數架構相似時,Crawler 會建立表格的分割區,而不是建立單獨的表。
    • AWS Glue Crawler 會在資料目錄中建立一個資料表或一個分割區表。如果該表已存在,Crawler 會根據 Crawler 配置更新架構定義。

Glue ETL Jobs

ETL Jobs 是一個腳本,這個腳本可以連接到來源資料,處理後寫入到目標,Glue Schedule 可以根據計劃或是事件啟動 Job 當然也可以按需執行

AWS Glue Job 有三種類型 Job

  • Spark
  • Streaming ETL
  • Python Shell

Spark 作業在由 AWS Glue 管理的 Apache Spark 環境中執行。它批量處理資料。

串流 ETL 作業與 Spark 作業類似,不同之處在於它對資料流執行 ETL。它使用 Apache Spark 結構化流程框架。

Python Shell 作業以 Shell 的形式執行 Python 腳本,以排程和執行不需要 Apache Spark 環境的任務。

AWS 客戶可以使用 AWS Glue 產生的腳本,也可以提供自己的腳本。透過來源架構和目標位置或架構,AWS Glue 程式碼產生器可以自動建立 Apache Spark API (PySpark) 或 Scala 腳本。開發人員可以以此腳本為起點,並根據作業需求進行編輯。

AWS Glue 可以以多種資料格式寫入輸出文件,包括 JSON、CSV、ORC(最佳化行列式)、Apache Parquet 和 Apache Avro。對於某些資料格式,可以編寫常見的壓縮格式。


AWS Glue Data Quality

AWS Glue Data Quality 基於開源 Deequ 框架構建,提供託管的無伺服器體驗,幫助 AWS 客戶評估和監控資料品質。 AWS Glue 資料品質目前為 AWS Glue 的公開預覽版,目前在部分 AWS 區域中可用。

使用 AWS Glue Data Quality 有四個流程

  1. 定義資料品質規則
    • AWS Glue Data Quality 功能會計算資料集的統計數據,然後建議一組 Data Quality Rule ,以便 AWS Glue 使用者快速上手。使用者可以調整建議的規則,也可以編寫自己的規則集。
    • 資料品質規則使用資料品質定義語言 (DQDL) 定義。
  2. 運行數據品質任務
    • Data Quality Task 會根據資料集評估規則集。也可以在 ETL 作業中評估 Data Quality Rule 。
    • 這些規則會檢查 Data Quality Dimension,例如資料的準確性、新鮮度和完整性。 DQDL 規則會檢查資料的特定特徵並傳回布林值。
  3. 審查數據品質結果
    • AWS Glue Data Quality 會計算資料品質分數。此分數是根據 Rule Set 評估時通過的資料品質規則的百分比計算得出的。
    • AWS Glue 使用者可以使用 AWS Glue 資料品質分數來採取措施修復資料集或判斷資料集是否可用。
    • Data Quality Metric 也可以選擇以日誌形式發佈到 Amazon CloudWatch。

Lake Formation With Glue

Glue 與 Glue Databrew 常常與 Lake Formation 一起使用

AWS Lake Formation 是基於 AWS Glue 構建,服務以以下方式互動:

  • Lake Formation 和 AWS Glue 共用同一個 AWS Glue Data Catalog。
  • Lake Formation 控制台可以透過啟動 Job 和 Crawler 來呼叫 AWS Glue Console。
  • 建立 Lake Formation 藍圖時產生的工作流程是 AWS Glue Job 流程。

Glue DataBrew

AWS Glue 以及 SageMaker 都有提供資料整理功能,Glue 中的 DataBrew 以及 SageMaker 的 Data Wrangler,其中 DataBrew 是一種資料準備工具提供視覺化工具,簡化資料準備流程,可以對 TB 甚至 PB 級資料進行視覺化、清理與標準化,可以直接從 Data Lake, Data Warehouse,資料庫,S3,Redshift,Aurora,RDS 執行這些操作 DataBrew 還可以存取 AWS Glue 資料目錄並將其用作資料來源。

DataBrew Project Process

  1. Create Project
  2. Choose or Import Dataset
  3. Create or Import Recipe
  4. Job Run Recipe against dataset
  5. Job stored transformed dataset

使用者可以從 250 多種內建轉換中進行選擇,無需編寫程式碼即可對資料進行合併、旋轉和轉置。 DataBrew 也會自動推薦以下轉換:

  • 過濾異常
  • 更正無效、錯誤分類或重複的數據
  • 將資料標準化為標準日期和時間值
  • 產生用於分析的聚合數據
  • 對於複雜的轉換,例如將單字轉換為通用基詞或字根,DataBrew 提供了使用自然語言處理 (NLP) 等高階機器學習技術的轉換功能。
更新於