本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
最佳化 ETL 上輸入檔案大小的擷取 AWS
由 Apoorva Patrikar 建立 (AWS)
環境:PoC 或試行 | 技術:分析;資料湖 | 工作負載:開放原始碼 |
AWS 服務:AWSGlue;Amazon S3 |
Summary
此模式說明如何在處理資料之前最佳化檔案大小,以最佳化 Glue 上大數據和 Apache Spark AWS 工作負載的擷取、轉換和載入 (ETL) 程序的擷取步驟。使用此模式來防止或解決小型檔案問題 。也就是說,當大量小型檔案由於檔案的彙總大小而減慢資料處理速度時。例如,各僅數百個 KB 的檔案可以大幅降低 Glue AWS 任務的資料處理速度。這是因為 AWS Glue 必須在 Amazon Simple Storage Service (Amazon S3) 上執行內部清單函數,且 YARN(還有另一個資源協商者) 必須存放大量中繼資料。若要改善資料處理速度,您可以使用分組讓ETL任務將一組輸入檔案讀取到單一記憶體內分割區。分割區會自動將較小的檔案分組在一起。或者,您可以使用自訂程式碼將批次邏輯新增至現有檔案。
先決條件和限制
先決條件
作用中AWS帳戶
一或多個AWS膠合任務
一或多個大數據或 Apache Spark
工作負載
架構
下列模式顯示 Glue AWS 任務如何處理不同格式的資料,然後存放在 S3 儲存貯體中,以取得效能的可見性。
該圖顯示以下工作流程:
Glue AWS 任務會將 CSV、 JSON和 Parquet 格式的小檔案轉換為動態影格。注意:輸入檔案的大小對 Glue AWS 任務的效能影響最大。
Glue AWS 任務會在 S3 儲存貯體中執行內部清單函數。
工具
AWS Glue 是完全受管ETL的服務。它可協助您在資料存放區和資料串流之間可靠地分類、清除、擴充和移動資料。
Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
指定群組大小。 | 如果您有超過 50,000 個檔案,依預設會完成分組。不過,您也可以在 | 資料工程師 |
撰寫群組代碼。 | 使用
注意:使用 | 資料工程師 |
將程式碼新增至工作流程。 | 在 Glue AWS 中將群組代碼新增至您的任務工作流程。 | 資料工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
選擇語言和處理平台。 | 選擇針對您的使用案例量身打造的指令碼語言和處理平台。 | 雲端架構師 |
撰寫程式碼。 | 寫入自訂邏輯,將檔案批次處理在一起。 | 雲端架構師 |
將程式碼新增至工作流程。 | 在 Glue AWS 中將程式碼新增至您的任務工作流程。這可讓您的自訂邏輯在每次執行任務時套用。 | 資料工程師 |
任務 | 描述 | 所需的技能 |
---|---|---|
分析消耗模式。 | 了解下游應用程式如何使用您寫入的資料。例如,如果他們每天查詢資料,而您只查詢每個區域的分割區資料,或擁有非常小的輸出檔案,例如每個檔案 2.5 KB,則這並非消耗的最佳選擇。 | DBA |
寫入前重新分割資料。 | 根據處理期間 (根據處理邏輯) 和處理後 (根據消耗) 的聯結或查詢重新分割。例如,根據位元組大小重新分割,例如 | 資料工程師 |
相關資源
其他資訊
判斷檔案大小
判斷檔案大小是否太大或太小沒有簡單的方式。檔案大小對處理效能的影響取決於叢集的組態。在核心 Hadoop 中,建議您使用 128 MB 或 256 MB 的檔案,以充分利用區塊大小。
對於 Glue AWS 上的大多數文字檔案工作負載,我們建議 5-10 DPU叢集的檔案大小介於 100 MB 到 1 GB 之間。若要找出輸入檔案的最大大小,請監控 Glue AWS 任務的預先處理區段,然後檢查任務的CPU利用率和記憶體使用率。
其他考量事項
如果早期的效能ETL是瓶頸,請考慮在處理之前分組或合併資料檔案。如果您完全控制檔案產生程序,在原始資料傳送至 之前,在來源系統本身彙總資料點可能更有效率AWS。