AI時代には、企業はデータから大規模に価値を抽出することを目指すようになっていますが、多くの場合、モデルの構築や改善に必要な大量のデータを処理できるスケーラブルなデータエンジニアリング基盤を確立することは困難です。大規模なデータセットを処理するために設計されたSparkは、人気のあるソリューションですが、特にビッグデータ処理や分散システムに初めて触れるユーザーにとっては、管理が難しい場合があります。
組織がAIに必要な安全でスケーラブルなデータファウンデーションを、運用上の複雑さなしで構築できるようにするため、SnowflakeはSnowparkを立ち上げました。Snowparkでは、使い慣れたDataFrameスタイルのプログラミングとカスタムコード実行により、スケーリングとパフォーマンスチューニングを自動的に処理し、Pythonなどのプログラミング言語を使用してSnowflakeでデータを処理できます。Snowflakeを使用しているお客様は、SnowparkではマネージドSparkと比較して、中央値で4.6倍のパフォーマンス高速化と35%のコスト削減を実現しています。
既存のSparkコードベースを持つチームがより迅速にSnowparkを導入できるように、私たちはSnowpark移行アクセラレータを立ち上げます。これは、開発者がより迅速かつ効率的にSnowparkに移行するのに役立つ、Snowflakeの無料のセルフサービスコード評価および変換ツールです。このツールは、評価と変換の2つの主要な役割を果たします。
PythonまたはScalaで書かれたコードベースをスキャンし、Snowparkに変換するためのレディネススコアを出力します。その評価から、アクセラレーターは参照をSpark APIからSnowpark APIに自動的に変換できます。
「Snowpark移行アクセラレータは、Snowflakeに移行するかどうかの意思決定に非常に役立ちました。コードの互換性に関するインサイトが得られ、移行にかかる時間を短縮できました」 – Travelpass、CTO、Alan Feuerlein氏
仕組みは?
Snowpark移行アクセラレータは、コードベースに存在する機能を表す内部モデルを構築します。このモデルは、特定のソース言語に依存しない抽象構文木(AST)です。そのため、コードファイルと複数の言語(Scala、Python、SQLなど)のノートブックを同時に取り込むことができます。ソースデータがツールで分析されることはなく(入力はコードのみ)、ソースプラットフォームに接続されません。
ステップ1:評価
モデルの構築が完了すると、ソースコードの内容を説明する一連のレポートが生成されます。そのうちのいくつかは、コードベースがSnowparkにどの程度「対応」しているかを報告する概要です。その他、特定のAPI、SQLステートメント、または内部依存関係への各参照の場所を示す完全なインベントリもあります。
これらのインベントリから、Snowpark移行アクセラレーターは変換可能なものを正確に特定します。
ステップ2:変換
識別されたSpark APIの各要素について、Snowpark移行アクセラレータの変換エンジンは通常、次のいずれかを実行します。
- Snowparkに直接マッピングできるものを特定し、インポート呼び出しを更新します。
- 直接的なマッピングがない場合、ソースコードに存在する機能をSnowparkでSnowflakeに複製する。
- 課題インベントリ内の要素を報告し、出力コードにコメントを記述します。
ツールの変換機能は特効薬ではないことに注意してください。完全な移行は実行せず、できることを特定し、Snowflakeと互換性のある機能的に同等の出力に変換します。
Snowpark移行アクセラレータを最大限に活用
このツールは、特にSparkとHiveのコードベースで構築されたデータ処理パイプラインを最適化するよう設計されています。
- ETL:アクセラレーションは、さまざまなソースからのデータの抽出、変換と集約、クリーニング、フィルタリング、集約、結合、変換されたデータのターゲットシステムへのロードを伴うETLプロセスで特に役立ちます。
- バッチ処理パイプライン:大量のデータをスケジュールどおりに処理できます。これは、データの集約、レポート作成、バッチ予測などのタスクに最適です。
- 取り込みパイプライン:クラウドストレージからのデータやさまざまな形式のデータをアクセラレーターで効率的に管理できます。
- 特徴量エンジニアリング:生データから特徴量を作成して抽出し、機械学習タスクのモデル性能を強化することも、Snowpark移行アクセラレーターが優れている分野です。
Snowpark移行アクセラレータは、SparkとHiveのコードベースの高速化を目的に設計されていますが、Snowparkは一般にPythonコードをサポートしています。非Sparkコードのアクセラレーションは提供されませんが、コードサイズ、使用されているテクノロジー、サポートされているライブラリ、pandasの使用状況に関する有益な情報は引き続き提供されます。このデータは、Snowflake内のオーケストレーション、さまざまなワークロードのパフォーマンスと効率の最適化の取り組みの指針として利用できます。
アクセラレータを使用する際に覚えておくと便利なアイデアをいくつか紹介します。
- 目的を把握する。このツールはPythonまたはScalaコードのコードベースで使用できますが、最大限に活用するにはSpark APIへの参照が必要です。純粋なPythonまたはScalaであれば、評価は有用ですが(すべてのAPIへの参照がカタログ化されます)、変換はほとんど行われず、レディネススコアも得られない可能性があります。
- インプットが重要です。アクセラレータがソースコードファイルを読み取れない場合、またはソース言語で実行されていない場合、ファイルを適切に分析できません。ツールを通じて実行されるソースコードベースに注意してください。ファイルが正しい拡張子で識別され、ソース内で実際に機能することを確認します。Snowpark移行アクセラレータを実行する前に、必要なドキュメントを確認してください。
- レディネススコアを把握します。レディネススコアは、何に変換できるかを示す指標であり、労力の見積もりとして解釈すべきではありません。
- サイズに注意してください。評価のためには、移行の全体像を把握するためにコードベース全体を実行することをお勧めします。余分なコードファイルが多数ある場合や、スキャンされるファイルの合計サイズ(バイト単位)が極めて大きい場合、Snowpark移行アクセラレーターでコードを処理するマシンの内部リソースが不足する可能性があります。コンバージョンは、始めたばかりの場合は小規模から始めます。
- プログラムで問題に対処する。変換からの出力コードを操作する場合は、コードベース全体でプログラムで問題を解決します。次のコードベースに進む前に、コードベース全体でエラーを解決します。
- 特効薬なしこのツールでは平均95%以上の自動化率が確認されていますが、100%自動化されたコンバージョンはありません。何らかの手作業が必要になります。
- リーチアウト!問題が発生した場合は、ツールに内蔵されている「問題報告」機能を利用して、ご遠慮なくSnowflakeコミュニティに投稿してください。ツールで生成された出力レポート/インベントリのユースケースを見つけたら、共有してください。
以下のベストプラクティスに従うことで、Snowpark移行アクセラレータを最大限に活用できるようになります。Snowparkへのスムーズなオンランプを今すぐお試しください。
開始する
ローカルマシンまたはコンテナにインストーラーをダウンロードするだけで、Snowpark移行アクセラレータを無料で利用できます。詳細については、以下のリソースを参照してください。