

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

# 最佳實務
<a name="best-practices"></a>

使用 進行開發時 AWS Glue，請考慮下列最佳實務。

## 先在本機開發
<a name="run-locally"></a>

若要在建置 ETL 任務時節省成本和時間，請先在本機測試您的程式碼和商業邏輯。如需設定 Docker 容器的說明，以協助您在 shell 和整合開發環境 (IDE) 中測試 AWS Glue ETL 任務，請參閱部落格文章[使用 Docker 容器在本機開發和測試 AWS Glue 任務](https://aws.amazon.com/blogs/big-data/develop-and-test-aws-glue-version-3-0-jobs-locally-using-a-docker-container/)。

## 使用 AWS Glue 互動式工作階段
<a name="dev-endpoint"></a>

AWS Glue 互動式工作階段提供無伺服器 Spark 後端，並搭配與 PyCharm、IntelliJ 和 VS 程式碼等筆記本和 IDEs 整合的開放原始碼 Jupyter 核心。透過使用互動式工作階段，您可以使用 AWS Glue Spark 後端和您選擇的 IDE 在實際資料集上測試程式碼。若要開始使用，請遵循[AWS Glue 互動式工作階段入門](https://docs.aws.amazon.com/glue/latest/dg/interactive-sessions.html)中的步驟。

## 使用分割來確切查詢您需要的內容
<a name="partitioning"></a>

*分割*是指根據特定資料欄或索引鍵，將大型資料集分割成較小的分割區。分割資料時， AWS Glue 可以對滿足特定分割條件的資料子集執行選擇性掃描，而不是掃描整個資料集。這會導致更快、更有效率的查詢處理，特別是在使用大型資料集時。

根據將對其執行之查詢的分割區資料。例如，如果大多數查詢在特定資料欄上篩選，則該資料欄上的分割可以大幅縮短查詢時間。若要進一步了解分割資料，請參閱[在 中使用分割資料 AWS Glue](https://aws.amazon.com/blogs/big-data/work-with-partitioned-data-in-aws-glue/)。

## 最佳化記憶體管理
<a name="memory"></a>

寫入 AWS Glue ETL 任務時，記憶體管理至關重要，因為它們在 Apache Spark 引擎上執行，該引擎已針對記憶體內處理進行最佳化。中的部落格文章[最佳化記憶體管理 AWS Glue](https://aws.amazon.com/blogs/big-data/optimize-memory-management-in-aws-glue/)提供下列記憶體管理技術的詳細資訊：
+ 的 Amazon S3 清單實作 AWS Glue
+ 分組
+ 排除不相關的 Amazon S3 路徑和儲存類別
+ Spark 和 AWS Glue 讀取分割
+ 大量插入
+ 聯結最佳化
+ PySpark 使用者定義函數 UDFs)
+ 增量處理

## 使用高效的資料儲存格式
<a name="storage-formats"></a>

撰寫 ETL 任務時，我們建議以資料欄型資料格式輸出轉換的資料。Apache Parquet 和 ORC 等欄式資料格式常用於大數據儲存和分析。它們旨在將資料移動降至最低並最大化壓縮。這些格式也允許將資料分割至多個讀取器，以在查詢處理期間增加平行讀取。

壓縮資料也有助於減少儲存的資料量，並改善讀取/寫入操作效能。 原生 AWS Glue 支援多種壓縮格式。如需高效率資料儲存和壓縮的詳細資訊，請參閱[建置高效能資料管道](https://docs.aws.amazon.com/whitepapers/latest/aws-glue-best-practices-build-performant-data-pipeline/building-a-performance-efficient-data-pipeline.html#file-formats-and-data-compression)。

## 使用適當的擴展類型
<a name="scaling"></a>

了解何時水平擴展 （變更工作者數量） 或垂直擴展 （變更工作者類型） 很重要， AWS Glue 因為它可能會影響 ETL 任務的成本和效能。

一般而言，具有複雜轉換的 ETL 任務需要更密集的記憶體，且需要垂直擴展 （例如，從 G.1X 移至 G.2X 工作者類型）。對於具有大量資料的運算密集 ETL 任務，我們建議水平擴展，因為 AWS Glue 旨在跨多個節點平行處理該資料。

在 Amazon CloudWatch 中密切監控 AWS Glue 任務指標，可協助您判斷效能瓶頸是否因記憶體或運算不足所造成。如需 AWS Glue 工作者類型和擴展的詳細資訊，請參閱[使用 擴展 Apache Spark 任務和分割區資料的最佳實務 AWS Glue](https://aws.amazon.com/blogs/big-data/best-practices-to-scale-apache-spark-jobs-and-partition-data-with-aws-glue/)。