本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS Glue 建立 ETL 服務管道,以遞增方式將資料從 Amazon S3 載入到亞馬遜紅移
創建者:羅漢牙買加尼(AWS)和阿魯納巴達塔(AWS)
環境:生產 | 技術:分析、資料湖、儲存與備份 | AWS 服務:Amazon Redshift;Amazon S3;AWS AWS Glue;AWS Lambda |
Summary
此模式提供有關如何設定 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 帳戶
具有適當權限並包含 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 目前支援的檔案格式。
不支援即時下游報告。
架構
源, 技術, 堆棧
包含 CSV、XML 或 JSON 檔案的 S3 儲存貯體
目標技術堆疊
S3 資料湖 (使用分割的 Parquet 檔案儲存)
Amazon Redshift
目標架構
![使用 AWS Glue 將增量變更從 Amazon S3 載入到亞馬遜紅移的架構。](images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/626aa365-e6e6-4874-a873-1c71adbe5306.png)
資料流
![使用 AWS Glue 將增量變更從 Amazon S3 載入到 Amazon Redshift 的資料流程。](images/pattern-img/105b58ec-56c1-464a-8e69-f625360caa14/images/29569e48-9f2d-4f48-bc59-1f33949d01ca.png)
工具
Amazon 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 紅移,亞馬 Amazon Relational Database Service(亞馬遜 RDS)和 Amazon DocumentDB 的內置集成。您可以使用秘密管理員主控台、命令列介面 (CLI) 或機密管理員 API 和軟體開發套件來儲存和集中管 Secrets Manager。 Amazon Athena 娜
— 亞馬遜雅典娜是一種互動式查詢服務,可讓您輕鬆分析存放在 Amazon S3 中的資料。Athena 是無伺服器且與 AWS Glue 整合,因此可以直接查詢使用 AWS Glue 編目的資料。Athena 經過彈性調整,可提供互動式查詢效能。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
分析來源系統的資料結構和屬性。 | 針對貢獻給 Amazon S3 資料湖的每個資料來源執行此任務。 | 數據工程師 |
定義分區和訪問策略。 | 此策略應根據數據捕獲的頻率,增量處理和消耗需求。請確定 S3 儲存貯體不對外開放,而且存取權限僅由特定服務角色型政策控制。如需詳細資訊,請參閱 Amazon S3 說明文件。 | 數據工程師 |
為每個資料來源類型建立單獨的 S3 儲存貯體,並為已處理的 (Parquet) 資料建立每個來源個別的 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 文件。 | 數據工程師 |
相關資源
其他資訊
提供更新和完整重新整理的詳細方法
Upsert:這適用於需要歷史彙總的資料集,具體取決於業務使用案例。根據您的業務需求,遵循更新和插入新資料 (Amazon Redshift 文件) 中所述的方法之一。
完整重新整理:這適用於不需要歷史彙總的小型資料集。請遵循下列其中一種方法:
截斷 Amazon Redshift 表。
從暫存區域載入目前的分割區
或:
使用目前的分割區資料建立暫存資料表。
放下目標 Amazon Redshift 表。
將暫存資料表重新命名為目標資料表。