AWS Glue for Spark と AWS Glue for Ray
AWS Glue on Apache Spark (AWS Glue ETL) では、PySpark を使用して、大規模なデータを処理する Python コードを書くことができます。Spark はこの問題に対する一般的な解決策ですが、Python 専門の経歴を持つデータエンジニアは、直感的な移行ではないと感じるかもしれません。Spark DataFrame モデルはシームレスに「Python らしい」というわけではなく、Scala 言語と、それが構築されている Java ランタイムを反映しています。
AWS Glue では、Python シェルジョブを使用してネイティブな Python データ統合を実行できます。これらのジョブは、単一の Amazon EC2 インスタンス上で実行され、そのインスタンスの容量によって制限されます。これにより、処理できるデータのスループットが制限され、ビッグデータを処理する場合は維持費が高くなります。
AWS Glue for Ray では、Spark の学習に多額の投資をすることなく Python ワークロードをスケールアップできます。Ray のパフォーマンスが向上する特定のシナリオを使用できます。選択肢が提供されることで、Spark と Ray の両方の強みを活用できます。
AWS Glue ETL と AWS Glue for Ray は根本的に異なるため、サポートしている機能も異なります。サポートされている機能については、ドキュメントを確認してください。
AWS Glue for Ray とは
Ray は Python を中心に、ワークロードのスケールアップに使用できるオープンソースの分散計算フレームワークです。Ray の詳細については、Ray のウェブサイト
AWS Glue for Ray を使用して、複数のマシンで並列に実行される計算用の Python スクリプトを作成できます。Ray ジョブおよびインタラクティブセッションでは、pandas などの使い慣れた Python ライブラリを使用して、ワークフローを簡単に記述して実行できます。Ray データセットの詳細については、Ray ドキュメントの「Ray データセット
AWS Glue for Ray を使用すると、わずか数行のコードだけで、企業規模のビッグデータに対する pandas のワークフローを実行できます。Ray ジョブは、AWS Glue コンソールまたは AWS SDK から作成できます。AWS Glue インタラクティブセッションを開いて、サーバーレスの Ray 環境でコードを実行することもできます。AWS Glue Studio のビジュアルジョブはまだサポートされていません。
AWS Glue for Ray ジョブを使用すると、スケジュールに従って、または Amazon EventBridge からのイベントに応じてスクリプトを実行できます。ジョブはログ情報とモニタリング統計を CloudWatch に保存するため、スクリプトの正常性と信頼性を確認できます。AWS Glue ジョブのシステムについての詳細は、「AWS Glue での Ray ジョブの使用」を参照してください。
Ray は、負荷に基づいてリアルタイムで再設定を行うマシンのクラスターに処理を分散することで、Python コードのスケーリング作業を自動化します。これにより、特定のワークロードで 1 ドルあたりのパフォーマンスが向上します。Ray ジョブでは、AWS Glue のジョブモデルに自動スケーリングがネイティブに組み込まれているため、この機能を最大限に活用できます。Ray ジョブは AWS Graviton 上で実行されるため、全体的な価格パフォーマンスが向上します。
コストの削減に加えて、ネイティブの自動スケーリングを使用すると、クラスターのメンテナンス、調整、管理に時間を費やすことなく Ray のワークロードを実行できます。pandas や AWS SDK for Pandas など、使い慣れたオープンソースライブラリをそのまま使用できます。これにより、AWS Glue for Ray で開発する際のイテレーション速度が向上します。AWS Glue for Ray を使用すると、費用対効果の高いデータ統合ワークロードをすばやく開発して実行できるようになります。