Q1. ある小売企業のMLチームが、S3上の数TBのトランザクションログに対して結合と集計を伴う前処理を行おうとしています。処理は学習パイプラインの一部として実行し、完了後は計算リソースを保持したくありません。既存のPySparkスクリプトを流用できることが条件です。最も適切な方法はどれですか?
- A. SageMaker の組み込み scikit-learn Processing コンテナでスクリプトを実行する
- B. 常時起動のEMRクラスターを構築し、ステップとしてPySparkジョブを投入する
- C. SageMaker Processing の PySpark プロセッサでジョブを実行する
- D. Lambda関数を並列起動し、S3オブジェクトごとに集計処理を行わせる
答えと解説を見る
正解:C
A scikit-learnコンテナは単一インスタンス上のpandas処理を想定しており、数TBの分散結合には向かない。PySparkスクリプトもそのままでは動かない
B 分散処理自体は可能だが、クラスターを保持し続けるため前処理を行わない時間も課金される。完了後にリソースを残さない要件に合わない
C(正解) 正解。マネージドなSparkクラスタがジョブ単位で起動し、既存のPySparkスクリプトをそのまま実行できる。完了時にクラスタは自動終了する
D Lambdaは実行時間15分・メモリ上限の制約があり、シャッフルを伴う結合処理には不向き。数TB規模の集計を担わせる設計ではない