![[UPDATE] Apache Spark upgrade agent for Amazon EMRが登場しました](https://images.ctfassets.net/ct0aopd36mqt/33a7q65plkoztFWVfWxPWl/a718447bea0d93a2d461000926d65428/reinvent2025_devio_update_w1200h630.png?w=3840&fm=webp)
[UPDATE] Apache Spark upgrade agent for Amazon EMRが登場しました
クラウド事業本部の石川です。Amazon EMR on EC2 および EMR Serverless における Apache Spark のバージョンアップグレードを加速する新機能、Apache Spark upgrade agentを発表しました。本記事では、このエージェント機能の技術的詳細と、実務でどのように活用できるかを解説します。
Apache Spark upgrade agentとは
Sparkは進化が早く、新しいバージョンにアップグレードすることで、Adaptive Query Execution (AQE) のようなパフォーマンス向上機能や、セキュリティパッチの恩恵を受けられます。しかし、実際のアップグレード作業はAPIの変更点の洗い出し、依存関係のコンフリクト解消、そして大量のアプリケーションの機能検証といった複雑なプロセスが必要で、通常は数ヶ月にも及ぶ大規模なプロジェクトになりがちです。
このデータエンジニアリングにおける課題を劇的に解決する新機能「Apache Spark upgrade agent for Amazon EMR」が発表されました。Apache Spark upgrade agentは、Amazon EMR on EC2およびEMR Serverlessで動作するSparkアプリケーションのバージョンアップグレードを支援する会話型AIエージェントです。
対応範囲
対応言語とバージョンは以下のとおりです。
- 対応言語: PySpark、Scala
- アップグレードパス: Spark 2.4 → 3.5
- 対象プラットフォーム: Amazon EMR on EC2、Amazon EMR Serverless
アクセス方法
エージェントには以下の3つの方法からアクセスできます。
- Amazon SageMaker Unified Studio(IDE Spaces)
- Kiro CLI
- MCP(Model Context Protocol)互換の任意のIDE(Claude Desktop、Amazon Q Developer CLIなど)
アーキテクチャ
エージェントは3つの主要コンポーネントで構成されています。
- MCP互換AIアシスタント: 開発環境で使用するAIインターフェース。Claude Desktop、Amazon Q Developer CLI、LlamaIndex、LangGraphなど、MCP対応のAIクライアントから利用可能
- MCP Proxy for AWS: クライアントとMCPサーバー間のセキュア通信を担当。ローカルのAWS認証情報を使用してSigV4認証を処理
- SageMaker Unified Studio Managed MCP Server: Sparkアップグレード専用ツールを提供(現在プレビュー中)
この設計により、開発者は普段使い慣れた開発環境からそのままアップグレード作業を進められます。
アップグレードワークフロー
エージェントは以下の5つのステップでアップグレードをオーケストレーションします。
Step 1: Planner(計画)
エージェントがプロジェクト構造を分析し、アップグレード計画を生成します。既存の計画を再利用することも、レビュー・修正することも可能です。
Step 2: Build and Execute(ビルドと実行)
ビルド環境のレビューと更新を行い、プロジェクトのビルド設定をアップグレードします。ビルドエラーが発生した場合は、アプリケーションが正常にコンパイル・ビルドされるまで反復的に修正を行います。
Step 3: Spark Code Edit Tools(コード編集)
プロジェクトビルド設定の更新、ビルドステップでのコンパイル・ビルド、またはランタイムで検出されたSparkアップグレードエラーの修正を行います。
Step 4: Build & Test(テスト)
ユニットテストや統合テストをローカルで実行できます。さらに、EMR検証ジョブを投入し、ジョブステータスの監視とデータ品質検証を実施します。
Step 5: Observability(可観測性)
EMRプラットフォーム向けに構築された可観測性ツールを使用してアップグレードプロセスを追跡できます。アップグレード分析の一覧表示やステータス確認も可能です。
重要な点として、すべてのコード変更はエンジニアがレビュー・承認してから実装されます。完全自動化ではなく、Human-in-the-Loopの設計です。
特長
MCPベースのオープンアーキテクチャ
Model Context Protocol(MCP)は、AIエージェントがドメイン固有のデータソースやツールにアクセスするための標準化されたインターフェースです。
このプロトコルを採用したことで、以下のメリットが生まれています。
- ツール選択の自由度: Claude Desktop、Amazon Q Developer CLI、Kiro CLI、さらにはLlamaIndexやLangGraphなどのフレームワークからも利用可能
- 既存ワークフローとの統合: 開発者が普段使い慣れたIDEでそのまま作業を継続できる
- 拡張性: MCP標準に準拠した新しいツールやサーバーを追加可能
MCP Proxy for AWSの役割
MCP Proxy for AWSは、MCPクライアントとAWSのMCPサーバー間のブリッジとして機能する軽量なプロキシです。
主な特徴は以下のとおりです。
- ローカルのAWS認証情報を使用したSigV4認証の自動処理
- 動的なツール検出
- 複雑なゲートウェイ設定なしでAWSホストのMCPサーバーにアクセス可能
- Python 3.10以上で動作し、uvパッケージマネージャーで簡単にインストール
# 実行例
uvx mcp-proxy-for-aws@latest <SigV4 MCP endpoint URL>
データ品質検証の自動化
アップグレードプロセスにおいて最も重要なのは、変換後もデータ処理の精度が維持されていることです。
エージェントは単なるビルド成功の確認にとどまらず、EMR検証ジョブを投入し、実際のデータ処理結果の正確性まで検証します。これにより、本番環境への移行リスクを大幅に低減できます。
Spark 2.4から3.5への主要な変更点
Spark 2.4から3.5への移行では、非常に多くのAPI変更や動作変更が存在します。エージェントが自動的に識別・対応する代表的な変更点として以下が挙げられます。
- Scala 2.11から2.12/2.13への移行
- SparkSession APIの変更
- DataFrame/Dataset APIの変更
- UDF(ユーザー定義関数)の仕様変更
- Log4j 1.xから2.xへの移行(EMR 6.8.0以降で必須)
- 非推奨APIの削除・置換
これらの変更を手動で調査・対応するには膨大な時間がかかりますが、エージェントがコードを分析し、必要な修正を提案してくれます。
ユースケース
ユースケース1: レガシーSparkアプリケーションのモダナイゼーション
多くの企業では、Spark 2.4で構築されたETLパイプラインやデータ処理ジョブが本番稼働しています。
Spark 3.xでは以下のような大幅な改善が利用可能になります。
- Adaptive Query Execution(AQE)によるクエリ最適化
- Dynamic Partition Pruning
- Koalas(pandas API on Spark)の統合
- 構造化ストリーミングの改善
- パフォーマンスの大幅向上
しかし、移行コストがネックになって二の足を踏んでいる組織も多いでしょう。エージェントを活用することで、影響範囲の分析から修正、検証までを体系的に進められます。
ユースケース2: 大規模データパイプラインの段階的移行
数百のSparkジョブを持つ大規模環境では、一括移行は現実的ではありません。
エージェントのPlanner機能を使って、ジョブごとに移行計画を立て、優先度の高いものから段階的にアップグレードしていくアプローチが取れます。各ジョブの依存関係や影響範囲を分析した上で、リスクの低いものから順に移行を進められます。
ユースケース3: EMR Serverlessへの移行準備
EMR Serverlessは最新のSparkバージョンでの利用が推奨されます。
SageMaker Unified StudioとEMR Serverlessの統合も進んでおり、インタラクティブなPySparkワークロードを実行できる環境が整備されています。既存のEMR on EC2環境からEMR Serverlessへの移行を検討している場合、まずSparkのバージョンアップグレードが前提条件になることが多いでしょう。エージェントを使えば、この前提条件を効率的にクリアできます。
ユースケース4: Apache Icebergとの組み合わせ
Apache Iceberg v2/v3の最新機能(Row-level deletes、Position deletesなど)を活用するには、Spark 3.x以上が推奨されます。
データレイクハウスアーキテクチャを構築する際、Iceberg対応のための前提条件としてSparkのアップグレードが必要になるケースでも、このエージェントが活躍します。
制約事項
対応バージョンの制限
現時点では、Spark 2.4から3.5へのアップグレードのみがサポートされています。
- Spark 2.3以前からの移行には対応していません
- Spark 3.5より新しいバージョン(将来リリースされる3.6など)への移行は現時点で未対応
対応言語の制限
PySpark(Python)とScalaのみが対応言語です。
- Java
- SQL(Spark SQL)
- R(SparkR)
これらで記述されたSparkアプリケーションには対応していません。SQLについては、多くの場合PySpark/Scalaから呼び出す形で使用されるため、呼び出し元のコードがPySpark/Scalaであれば対応可能です。
リージョンの制限
SageMaker Unified Studioが利用可能なすべてのAWSリージョンで利用できます。ただし、SageMaker Unified Studio自体がまだすべてのリージョンで利用可能ではない点に注意が必要です。
プレビューステータス
SageMaker Unified Studio Managed MCP Serverは現在プレビュー段階です。本番環境での利用前に、十分なテストを行うことを推奨します。
ネットワーク要件
VPC内からMCPサーバーにアクセスする場合は、Interface VPC Endpointの設定が必要になる場合があります。公式ドキュメントを参照してください。
Human-in-the-Loopの必要性
エージェントはすべてのコード変更についてエンジニアの承認を求めます。これは安全性の観点から重要な設計ですが、完全自動化を期待している場合は注意が必要です。
最後に
Apache Spark upgrade agent for Amazon EMRは、これまで多くのエンジニアリングリソースを必要としていたSparkのバージョンアップグレードを大幅に効率化する可能性を秘めています。
特に注目すべき点は以下の3つです。
- MCPベースのオープンアーキテクチャ: 特定のIDEに縛られず、開発者が好みの環境で作業できる
- Human-in-the-Loopの設計: 完全自動化ではなく、エンジニアが制御権を維持しながらAIの支援を受けられる
- データ品質検証まで含めた包括的なワークフロー: ビルド成功だけでなく、実際のデータ処理の正確性まで検証
数ヶ月かかっていたアップグレードプロジェクトが数週間で完了できるようになるというのは、多くの組織にとって大きなメリットです。
Spark 2.4で止まっているレガシー環境を持つ方、Spark 3.xの新機能(AQEやDynamic Partition Pruningなど)を活用したい方、Apache Icebergベースのデータレイクハウスを構築したい方は、ぜひこのエージェントを試してみてください。
合わせて読みたい









