使用 AWS Glue 建立 ETL 服務管道,以遞增方式將資料從 Amazon S3 載入到亞馬遜紅移 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS Glue 建立 ETL 服務管道,以遞增方式將資料從 Amazon S3 載入到亞馬遜紅移

創建者:羅漢牙買加尼(AWS)和阿魯納巴達塔(AWS)

環境:生產

技術:分析、資料湖、儲存與備份

AWS 服務:Amazon Redshift;Amazon S3;AWS AWS Glue;AWS Lambda

使用 AWS Glue 建立從 Amazon S3 到亞馬 Amazon Redshift ETL 管道的摘要

此模式提供有關如何設定 Amazon Simple Storage Service (Amazon S3) 以獲得最佳資料湖效能,然後使用 AWS Glue 將增量資料變更從 Amazon S3 載入 Amazon Redshift,以及執行擷取、轉換和載入 (ETL) 操作。 

Amazon S3 中的來源檔案可以有不同的格式,包括逗號分隔值 (CSV)、XML 和 JSON 檔案。此模式說明如何使用 AWS Glue 將來源檔案轉換成成本最佳化且效能最佳化的格式,例如 Apache Parquet。您可以直接從亞馬遜雅典娜和亞馬 Amazon Redshift Spectrum 查詢實木複合地板文件。您也可以將實木複合地板檔案載入 Amazon Redshift、彙總這些檔案,並與消費者共用彙總的資料,或使用 Amazon QuickSight 將資料視覺化。

使用 AWS Glue 建立從 Amazon S3 到亞馬 Amazon Redshift ETL 管道的先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 具有適當權限並包含 CSV、XML 或 JSON 檔案的 S3 來源儲存貯體。

假設

  • CSV、XML 或 JSON 來源檔案已經載入到 Amazon S3,而且可以從設定 AWS Glue 和 Amazon Redshift 的帳戶存取。

  • 我們遵循載入檔案、分割檔案、壓縮和使用資訊清單的最佳實務,如 Amazon Redshift 文件所述。

  • 來源檔案結構未變更。

  • 來源系統能夠依照 Amazon S3 中定義的資料夾結構,將資料擷取到 Amazon S3。

  • Amazon Redshift 叢集跨越單一可用區域。(這個架構是適當的,因為 AWS Lambda、AWS Glue 和 Amazon Athena 都是無伺服器的。) 為了達到高可用性,叢集快照會以一般頻率拍攝。

限制

使用 AWS Glue 建立從 Amazon S3 到亞馬 Amazon Redshift 的 ETL 管道的架構

源, 技術, 堆棧

  • 包含 CSV、XML 或 JSON 檔案的 S3 儲存貯體

目標技術堆疊

  • S3 資料湖 (使用分割的 Parquet 檔案儲存)

  • Amazon Redshift

目標架構

資料流

使用 AWS Glue 建立從 Amazon S3 到亞馬 Amazon Redshift 的 ETL 管道的工具

  • 亞馬遜 S3 — 亞馬遜簡單儲存服務 (Amazon S3) 是可高度擴展的物件儲存服務。Amazon S3 可用於各種儲存解決方案,包括網站、行動應用程式、備份和資料湖。

  • AWS Lambda — AWS Lambda 可讓您執行程式碼,而無需佈建或管理伺服器。AWS Lambda 是一項事件驅動型服務;您可以設定程式碼以從其他 AWS 服務自動啟動。

  • Amazon Redshift — Amazon Redshift 是一種全受管的 PB 級資料倉儲服務。使用 Amazon Redshift,您可以使用標準 SQL 跨資料倉儲和資料湖查詢數 PB 的結構化和半結構化資料。

  • AWS Glue — AWS Glue 是全受管 ETL 服務,可讓您更輕鬆地準備和載入資料以進行分析。AWS Glue 會探索您的資料,並將相關的中繼資料 (例如,表格定義和結構描述) 存放在 AWS Glue 資料型錄中。您的目錄數據可以立即搜索,可以查詢,並且可用於 ETL。

  • AWS Secrets Manager — AWS Secrets Manager 可協助保護和集中管理應用程式或服務存取所需的機密。此服務會儲存資料庫認證、API 金鑰和其他機密,並且不需要以純文字格式對敏感資訊進行硬式編碼。Secrets Manager 還提供金鑰輪替,以滿足安全性和合規性需求。它具有亞馬遜紅移,亞馬 Amazon Relational Database Service(亞馬遜 RDS)和 Amazon DocumentDB 的內置集成。您可以使用秘密管理員主控台、命令列介面 (CLI) 或機密管理員 API 和軟體開發套件來儲存和集中管 Secrets Manager。

  • Amazon Athena 娜 — 亞馬遜雅典娜是一種互動式查詢服務,可讓您輕鬆分析存放在 Amazon S3 中的資料。Athena 是無伺服器且與 AWS Glue 整合,因此可以直接查詢使用 AWS Glue 編目的資料。Athena 經過彈性調整,可提供互動式查詢效能。

使用 AWS AWS Glue 構建 ETL 管道從 Amazon S3 到 Amazon Redshift 的史詩

任務 描述 所需技能

分析來源系統的資料結構和屬性。

針對貢獻給 Amazon S3 資料湖的每個資料來源執行此任務。

數據工程師

定義分區和訪問策略。

此策略應根據數據捕獲的頻率,增量處理和消耗需求。確定 S3 儲存貯體不對外開放,而且存取權限僅由特定服務角色型政策控制。如需詳細資訊,請參閱 Amazon S3 說明文件

數據工程師

為每個資料來源類型建立單獨的 S3 儲存貯體,並為已處理的 (Parquet) 資料建立每個來源個別的 S3 儲存貯體。

為每個來源建立個別值區,然後根據來源系統的資料擷取頻率建立資料夾結構;例如,s3://source-system-name/date/hour。對於已處理 (轉換為 Parquet 格式) 的檔案,請建立類似的結構;例如,s3://source-processed-bucket/date/hour。如需建立 S3 儲存貯體的詳細資訊,請參閱 Amazon S3 文件

數據工程師
任務 描述 所需技能

使用適當的參數群組以及維護和備份策略來啟動 Amazon Redshift 叢集。

在建立 Amazon Redshift 叢集時,請將密碼管理員資料庫密碼用於管理員使用者登入資料。如需建立和調整 Amazon Redshift 叢集大小的相關資訊,請參閱 Amazon Redshift 文件調整雲端資料倉儲大小白皮書。

數據工程師

建立 IAM 服務角色並將其連接至 Amazon Redshift 叢集。

AWS Identity and Access Management (IAM) 服務角色可確保存取 Secrets Manager 和來源 S3 儲存貯體。如需詳細資訊,請參閱有關授權新增角色的 AWS 文件。

數據工程師

建立資料庫結構描述。

請遵循表格設計的 Amazon Redshift 最佳實務。根據使用案例,選擇適當的排序和分佈索引鍵,以及可能的最佳壓縮編碼。如需最佳實務,請參閱 AWS 文件

數據工程師

設定工作負載管理。

根據您的需求,確定工作負載管理 (WLM) 佇列、短查詢加速 (SQA) 或並行擴展。如需詳細資訊,請參閱 Amazon Redshift 文件中的實作工作負載管理

數據工程師
任務 描述 所需技能

創建一個新的密碼來存儲在 Secrets Manager Amazon Redshift 登錄憑據。

此密碼會儲存 admin 使用者以及個別資料庫服務使用者的認證。如需指示,請參閱 Secrets Manager 文件。選擇 Amazon Redshift 叢集作為密碼類型。此外,在「秘密」旋轉頁面上,開啟旋轉。這會在 Amazon Redshift 叢集中建立適當的使用者,並且會在定義的間隔輪換金鑰密碼。

數據工程師

建立 IAM 政策以限制 Secrets Manager 存取權。

限制 Secrets Manager 員只能存取 Amazon Redshift 管理員和 AWS Glue。

數據工程師
任務 描述 所需技能

在 AWS Glue 資料型錄中,為 Amazon Redshift 新增連線。

如需指示,請參閱 AWS Glue 文件

數據工程師

為 AWS Glue 建立和附加 IAM 服務角色,以存取 Secrets Manager、Amazon Redshift 和 S3 儲存貯體。

如需詳細資訊,請參閱 AWS Glue 文件

數據工程師

定義來源的 AWS Glue 資料型錄。

這個步驟涉及在 AWS Glue 資料型錄中建立資料庫和必要的資料表。您可以使用爬蟲程式將 AWS Glue 資料庫中的表格分類,或將其設定為 Amazon Athena 外部表格。您也可以透過 AWS Glue 資料型錄存取在 Athena 設定的外部表格。請參閱 AWS 文件,以取得有關在 Athena 清除資料目錄和建立外部表格的詳細資訊。

數據工程師

建立 AWS Glue 任務以處理來源資料。

AWS Glue 任務可以是 Python 殼層,也可 PySpark 以是標準化、重複資料刪除和清理來源資料集。若要優化效能並避免查詢整個 S3 來源儲存貯體,請按日期對 S3 儲存貯體進行分割,並按年、月、日和小時劃分,做為 AWS Glue 任務的下推述詞。如需詳細資訊,請參閱 AWS Glue 文件。以 Parquet 格式將已處理和轉換的資料載入已處理的 S3 儲存貯體分割區。您可以查詢 Athena 的鑲木地板。

數據工程師

建立 AWS Glue 任務以將資料載入 Amazon Redshift。

AWS Glue 任務可以是 Python 殼層,也可以透過提升資料 PySpark 來載入資料,然後進行完整的重新整理。如需詳細資訊,請參閱 AWS Glue 文件其他資訊一節。

數據工程師

(選擇性) 視需要使用觸發程式來排程 AWS Glue 任務。

增量資料載入主要由 Amazon S3 事件所驅動,該事件會導致 AWS Lambda 函數呼叫 AWS Glue 任務。針對需要以時間為基礎的任何資料載入使用 AWS Glue 觸發器型排程,而不是以事件為基礎的排程。

數據工程師
任務 描述 所需技能

為 AWS Lambda 建立並附加 IAM 服務連結角色,以存取 S3 儲存貯體和 AWS AWS Glue 任務。

建立 AWS Lambda 的 IAM 服務連結角色,其中包含讀取 Amazon S3 物件和儲存貯體的政策,以及存取 AWS Glue API 以開始 AWS Glue 任務的政策。如需詳細資訊,請參閱知識中心

數據工程師

建立 Lambda 函數以根據定義的 Amazon S3 事件執行 AWS AWS Glue 任務。

Lambda 函數應該透過建立 Amazon S3 資訊清單資訊清單來啟動。Lambda 函數應將 Amazon S3 資料夾位置 (例如,來源儲存貯體/年/月/日/小時) 作為參數傳遞給 AWS Glue 任務。AWS Glue 任務將使用此參數做為下推述詞,以優化存取和任務處理效能。如需詳細資訊,請參閱 AWS Glue 文件

數據工程師

建立 Amazon S3 PUT 物件事件以偵測物件建立,並呼叫相應的 Lambda 函數。

Amazon S3 PUT 物件事件應該只能透過建立資訊清單資訊清單來啟動。資訊清單可控制 Lambda 函數和 AWS Glue 任務並行處理,並以批次方式處理載入,而不是處理到達 S3 來源儲存貯體特定分區的個別資料。如需詳細資訊,請參閱 L ambda 文件

數據工程師

使用 AWS Glue 建立從 Amazon S3 到亞馬 Amazon Redshift 的 ETL 管道的相關資源

使用 AWS Glue 建立從 Amazon S3 到亞馬 Amazon Redshift 的 ETL 管道的其他資訊

提供更新和完整重新整理的詳細方法

Upsert:這適用於需要歷史彙總的資料集,視業務使用案例而定。根據您的業務需求,遵循更新和插入新資料 (Amazon Redshift 文件) 中所述的方法之一。

完整重新整理:這適用於不需要歷史彙總的小型資料集。請遵循下列其中一種方法:

  1. 截斷 Amazon Redshift 表。

  2. 從暫存區域載入目前的分割區

或:

  1. 使用目前的分割區資料建立暫存資料表。

  2. 放下目標 Amazon Redshift 表。

  3. 將暫存資料表重新命名為目標資料表。