ベストプラクティス - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ベストプラクティス

を使用して開発する場合は AWS Glue、以下のベストプラクティスを考慮してください。

まずローカルで開発します。

ETL ジョブの構築にかかるコストと時間を節約するには、まずコードとビジネスロジックをローカルでテストします。シェルと統合開発環境 (IDE) の両方で AWS Glue ETL ジョブをテストするのに役立つ Docker コンテナを設定する手順については、ブログ記事「Docker コンテナを使用してローカルで AWS Glue ジョブを開発およびテストする」を参照してください。

AWS Glue インタラクティブセッションを使用する

AWS Glue インタラクティブセッションは、、IntelliJ、VS Code などのノートブックや IDEs と統合するオープンソースの Jupyter カーネルと組み合わされた PyCharmサーバーレス Spark バックエンドを提供します。インタラクティブセッションを使用すると、 AWS Glue Spark バックエンドと任意の IDE を使用して、実際のデータセットでコードをテストできます。開始するには、AWS Glue 「インタラクティブセッションの開始方法」のステップに従います。

パーティショニングを使用して、必要なものを正確にクエリします。

パーティショニングとは、大きなデータセットを特定の列やキーに基づいて小さなパーティションに分割することです。データがパーティション化されると、データセット全体をスキャンするのではなく、特定のパーティション条件を満たすデータのサブセットに対して選択的スキャン AWS Glue を実行できます。これにより、特に大きなデータセットを扱う場合に、クエリ処理がより速く、より効率的になります。

そのデータに対して実行されるクエリに基づいてデータを分割します。たとえば、ほとんどのクエリが特定の列でフィルタリングされている場合、その列を分割することでクエリ時間を大幅に短縮できます。データのパーティショニングについて詳しくは、「 AWS Glueでの分割データの処理」を参照してください。

メモリ管理を最適化する

AWS Glue ETL ジョブを記述する場合、メモリ管理はメモリ内処理用に最適化された Apache Spark エンジンで実行されるため、重要です。ブログ記事「 AWS Glueにおけるメモリ管理の最適化」では、以下のメモリ管理手法について詳しく説明しています。

  • の Amazon S3 リスト実装 AWS Glue

  • グループ分け

  • 無関係な Amazon S3 パスとストレージクラスを除外する

  • Spark と AWS Glue 読み取りパーティショニング

  • バルクインサート

  • 最適化に取り組む

  • PySpark ユーザー定義関数 (UDFs)

  • インクリメンタル処理

効率的なデータストレージ形式を使用する

ETL ジョブを作成する場合、変換されたデータを列ベースのデータ形式で出力することをおすすめします。Apache Parquet や ORC などの列指向データ形式は、ビッグデータの保存や分析によく使用されます。データの移動を最小限に抑え、圧縮率を最大化するように設計されています。これらのフォーマットはまた、クエリ処理中の並列読み取りを増やすために、複数のリーダーにデータを分割することも可能です。

また、データを圧縮することで、保存されるデータの量を減らし、読み取り/書き込みオペレーションのパフォーマンスを向上させることもできます。 は、複数の圧縮形式をネイティブに AWS Glue サポートしています。効率的なデータ保存と圧縮について詳しくは、「パフォーマンス効率の高いデータパイプラインの構築」を参照してください。

適切なスケーリングタイプを使用する

ETL ジョブのコストとパフォーマンスに影響する AWS Glue 可能性があるため、水平スケーリング (ワーカー数の変更) や垂直スケーリング (ワーカータイプの変更) を行うタイミングを理解することは にとって重要です。

一般に、変換が複雑な ETL ジョブはメモリを大量に消費し、垂直スケーリング (たとえば G.1X から G.2X ワーカータイプへの移行) が必要です。大量のデータを含む計算負荷の高い ETL ジョブの場合、 AWS Glue は複数のノードでそのデータを並列処理するように設計されているため、水平スケーリングをお勧めします。

Amazon で AWS Glue ジョブメトリクスを注意深くモニタリング CloudWatch すると、パフォーマンスのボトルネックがメモリ不足またはコンピューティング不足によるものかどうかを判断できます。 AWS Glue ワーカータイプとスケーリングの詳細については、「Apache Spark ジョブをスケーリングし、 でデータをパーティション化するためのベストプラクティス AWS Glue」を参照してください。