Sparkの実行は、変換やビジネスロジックを記述するだけではありません。クラスターのチューニング、インフラストラクチャへのパッチ適用、依存関係環境の管理も必要になります。
これらのワークロードをSnowflakeに移行することで、この課題に直接対処できます。お客様は最大5.1倍のパフォーマンス向上と42%のコスト削減を実感しています1。Apache Spark™用Snowpark Connectを使用すると、既存のSparkコードを最小限の変更でSnowflakeのエンジン上で実行できます。プロビジョニング、チューニング、パッチ適用を行うクラスターは必要ありません。
一般的なAIコーディングアシスタントの多くは、大規模な移行となると不十分な場合があります。スニペットを書き換えることはできても、コードベース全体を新しいエンジンに移行するための互換性のコンテキスト(どのパターンがサポートされていないか、それらをどのように同等のDataFrameにマッピングするか、変更内容をどのように記録するかなど)が不足しています。データネイティブなAIコーディングエージェントであるSnowflake CoCoのspark-migrationスキルは、そのギャップを埋めるために構築されています。
1つのプロンプト、1つのコードベース
このスキルを理解する最も明確な方法は、実際に実行されているところを見ることです。以下のデモは、PySparkで記述されたデータパイプラインのディレクトリから始まります。
そこからのプロンプトはシンプルです。ファイルまたはファイルのディレクトリをSnowpark Connectに移行するようにCoCoに指示するだけです。これにより、snowpark-connectの移行パスを調整するspark-migrationスキルが起動し、SparkコードをSnowpark Connectと互換性を持たせるためのガイダンスが提供されます。注:このスキルの入力ファイルには、Python、Scala、Javaのコードファイル(およびビルドファイル)を使用できます。このスキルはノートブックファイルを取り込み、Snowflakeとの互換性を確保することもできます。
このデモでは、単一のプロンプトから大規模なSparkコードベースの互換性がチェックされ、Snowflakeに移行される様子を示しています。
図 1:1つの対話型プロンプトからスキャン、書き換え、レポート作成が行われたPySparkパイプラインのディレクトリ
CoCoを使用したPySparkからSnowflakeへの移行方法
その単一のプロンプトの裏側では、CoCoのエージェント型ワークフローが、移行の専門家が行うような以下のステップを実行します。
- 評価を行い、インベントリを構築:このスキルは、Snowflakeのエンジニアリングチームが構築したナレッジベースを参照しながら、すべてのソースファイルをスキャンし、RDD操作、特定のUDFシリアル化パターン、サポートされていないファイル形式などの互換性の問題を検出します。各ファイル、依存関係、および一意のAPI呼び出しがインベントリ化されます。
- ターゲットを絞った修正を適用:コアとなる変換は、並列エージェントをディスパッチしてコードの修正を適用し、構文のコンパイルやエビデンスに基づくチェックなど、複数のゲートを通じて結果を検証することによって行われます。このフェーズでは、互換性のないパターンが同等のDataFrameに書き換えられ、インポートとセッション作成が更新されます。また、手動でのレビューが必要なもの(読み取りと書き込みの検証など)には、詳細な説明とともにフラグが立てられます。
- 人やエージェントが利用できる予測可能なレポートを生成:これにより、課題ログ、インベントリレポート、および移行状態全体の検証が生成され、加えられたすべての変更と、まだ注意が必要な可能性のある事項に対する包括的な可視性が得られます。
- 変換されたコードの機能を検証:検証フェーズでは、元のPySparkコードと移行されたSnowpark Connectコードを同じ合成データに対して実行し、その出力をテーブルごとに比較することで、エンドツーエンドの検証を実行します。これにより、動作の違いが検出され、コードを実行する準備ができていることが検証されます。検証中に発見された修正は自動的に成果物ブランチにコミットされるため、結果として合否の判定が下されるだけでなく、より包括的な移行が実現します。この検証フェーズはオプションです。
開発者は、互換性のないパターンをファイル全体から検索したり、ドキュメントを相互参照したりする代わりに、1つのワークフローにとどまることができます。その間、SparkコードをSnowflake上で実行するために必要なスキャン、修正、レポート作成はCoCoが処理します。
単一ファイルにとどまらない対応
移行が1つのクリーンなステップで完了することはまれであるため、このスキルはコードベースのあらゆる状況に対応します。このスキルを実際の作業に適用するその他の方法をいくつか紹介します。
- 開始前に作業範囲を特定:「このコードベースの移行に必要な互換性と作業レベルを評価する」
- 実行前に検証:「このコードベースがSnowpark Connectで実行できることを検証する」
- 別のツールの移行を完了:「他の移行ツールの出力を分析し、移行を完了する」
Spark、PySpark、またはコードの移行について言及すると、このスキルは自動的にアクティブになります。また、spark-migrationを使用して直接呼び出すことも可能です。前述のとおり、手動でのレビューが必要なものにはフラグが立てられるため、変更内容を常に制御できます。
ご自身でお試しください
これは、手動での互換性テストやリファクタリングを削減し、Snowflake上でSparkワークロードをネイティブに実行するためのより迅速なパスを提供するという、非常に魅力的な提案です。既存の決定論的ツールを使用しても手作業で数時間かかっていた作業が、今では数分で完了します。
spark-migrationスキルはCoCoにバンドルされており、セットアップは不要です。
次のプロンプトをお試しください。「このファイルをSnowpark Connectに移行してください」
CoCoとSparkの移行を開始するには、こちらのドキュメントをご確認ください。
12022年11月から2025年5月までの期間について、お客様の実稼働ユースケースと概念実証(PoC)の実践におけるSnowparkとマネージドSparkサービスの速度とコストの比較結果に基づきます。調査結果はすべて、実データによる実際のお客様の結果を要約したものであり、ベンチマークに使用される作られたデータセットを表すものではありません。


