最佳實務 - AWS 規範指引

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

最佳實務

使用進行開發時 AWS Glue,請考慮下列最佳作法。

首先在本地開發

若要在建立 ETL 任務時節省成本和時間,請先在本機測試程式碼和商務邏輯。如需設定 Docker 容器的指示,以協助您在殼層和整合式開發環境 (IDE) 中測試 AWS Glue ETL 工作,請參閱部落格文章使用 Docker 容器在本機開發和測試 AWS Glue 工作

使用 AWS Glue 互動式會話

AWS Glue 互動式工作階段提供無伺服器 Spark 後端,再加上與筆記型電腦和 IDE (例如 IntelliJ 和 VS 程式碼) 整合的開放原始碼 Jupyter 核心。 PyCharm透過使用互動式工作階段,您可以使用 AWS Glue Spark 後端和您選擇的 IDE,在真實資料集上測試您的程式碼。若要開始使用,請依照開始使用 AWS Glue 互動式工作階段中的步驟進行。

使用分區來準確查詢您需要的內容

分割是指根據特定資料欄或索引鍵,將大型資料集分割成較小的分割區。資料分割後, AWS Glue 可以對符合特定分區準則的資料子集執行選擇性掃描,而不是掃描整個資料集。這樣可以更快速且更有效率地處理查詢,尤其是在處理大型資料集時。

根據將對其運行的查詢對數據進行分區。例如,如果大多數查詢篩選特定資料行,則在該資料行上進行分割可以大幅縮短查詢時間。若要深入瞭解如何分割資料,請參閱使用中的分區資料 AWS Glue

優化內存管理

寫入 AWS Glue ETL 作業時,記憶體管理非常重要,因為它們在 Apache Spark 引擎上執行,該引擎針對記憶體內部處理進行了最佳化。「最佳化記憶體管理」的部落格文章 AWS Glue提供下列記憶體管理技巧的詳細資訊:

  • Amazon S3 列表實現 AWS Glue

  • 分組

  • 排除不相關的 Amazon S3 路徑和儲存類別

  • 火花和 AWS Glue 讀取分區

  • 批量插入

  • 加入最佳化

  • PySpark 使用者定義函數 (UDF)

  • 增量處理

使用高效的資料儲存格式

編寫 ETL 工作時,我們建議使用以欄為基礎的資料格式輸出轉換後的資料。單欄式資料格式,例如 Apache 實木複合地板和 ORC,通常用於大數據儲存和分析。它們旨在最大限度地減少數據移動並最大程度地壓縮 這些格式也可以將資料分割至多個讀取器,以便在查詢處理期間增加 parallel 讀取。

壓縮資料也有助於減少儲存的資料量,並提高讀取/寫入作業效能。 AWS Glue 本地支持多種壓縮格式。如需有效率資料儲存和壓縮的詳細資訊,請參閱建置效能高效的資料管線

使用適當的縮放比例類型

瞭解何時水平擴展 (變更 Worker 的數目) 或垂直縮放 (變更 Worker 類型) 是非常重要的, AWS Glue 因為它可能會影響 ETL 工作的成本和效能。

一般而言,具有複雜轉換的 ETL 工作較為耗用記憶體,而且需要垂直擴充 (例如,從 G.1X 移至 G.2X 工作者類型)。對於具有大量資料的運算密集型 ETL 任務,我們建議您進行水平擴展,因為其設計 AWS Glue 是為了跨多個節點 parallel 處理該資料而設計。

密切監控 Amazon 中的 AWS Glue 任務指標可 CloudWatch 協助您判斷效能瓶頸是由於記憶體或運算不足造成的。如需有關 AWS Glue 背景工作者類型和調整規模的詳細資訊,請參閱擴展 Apache Spark 工作和分割資料的最佳做法 AWS Glue