Snowpark Migration Accelerator: コード準備の注意事項

Snowpark Migration Accelerator(SMA)を実行する前に、すべてのソースコードファイルが SMA をインストールしたコンピューターにあることを確認してください。SMA はコード分析のみを行うため、ソースデータベースやSpark環境に接続する必要はありません。

このツールは、提供されたソースコードに完全に依存しているため、 SMA が正しく処理するためには、ソースコードを読み取り可能な形式にする必要があります。

抽出

Snowpark Migration Accelerator(SMA)を実行する前に、すべてのソースコードファイルを1つのメインフォルダーに整理します。このメインフォルダーの中に既存のサブフォルダー構造を維持することができますが、すべてのコードファイルはこの1つのディレクトリの下に配置する必要があります。この要件は以下に適用されます。

以下のファイルタイプに対応しています。

  • GitHub リポジトリ(ZIP ファイルとしてダウンロードし、ローカルマシンに解凍)

  • Pythonスクリプトファイル

  • Scalaプロジェクトファイル

  • Databricksノートブックファイル

  • Jupyterノートブックはローカルコンピューター上で動作します。

移行を開始する前に、すべてのソースコードファイルを1つのメインフォルダーに集めます。ソースコードはさまざまな場所にある可能性がありますが、1つの場所に整理されていることで、移行プロセスがより効率的になります。すでに確立されたファイル構成がある場合は、メインフォルダー内でそれをそのまま維持してください。

GitHub リポジトリを ZIP ファイルにエクスポートする

Snowpark Migration Accelerator(SMA)を使用して正確で完全なレポートを作成するには、移行プロジェクトに関連するコードのみをスキャンします。利用可能なコードをすべてスキャンするのではなく、移行を予定している重要なコードファイルのみを特定し、含めます。詳細情報については、 考慮事項 セクションの サイズ をご参照ください。

考慮事項

Snowpark Migration Accelerator(SMA)と互換性のあるファイルタイプを確認し、ソースコードを SMA で分析するために準備する際のキーポイントを理解しましょう。

ファイルタイプ

Snowpark Migration Accelerator(SMA)は、ソースディレクトリ内のすべてのファイルを検査しますが、Spark API コードを含む可能性のある特定の拡張子を持つファイルのみを処理します。これには、通常のコードファイルとJupyterノートブックの両方が含まれます。

SMA がサポートしているファイルタイプのリストは、 このドキュメントのサポートされるファイルタイプセクション にあります。

エクスポートされるファイル

コードがローカルファイルではなくソース管理プラットフォームに保存されている場合は、 SMA が処理できる形式にエクスポートする必要があります。コードをエクスポートする方法をここに説明します。

Databricksユーザー用: Snowpark Migration Accelerator(SMA)を使用するには、ノートブックを.dbc形式にエクスポートする必要があります。ノートブックをエクスポートする方法については、 ノートブックのエクスポートに関するDatabricksドキュメント に詳しく説明されています。

ファイルのエクスポートでヘルプが必要な場合Snowflake Professional ServicesがDatabricks、Hive、その他のプラットフォーム用のスクリプトを管理している、 Snowflake Labs Githubレポジトリのエクスポートスクリプト をご覧ください。

  • 別のプラットフォームを使用している場合は、 コード抽出ページ を参照して、ご使用のプラットフォームに関する具体的な手順をご確認ください。コードを SMA で動作する形式に変換する際にサポートが必要な場合は、 sma-support@snowflake.com にお問い合わせください。

サイズ

Snowpark Migration Accelerator(SMA)は、データではなくソースコードを分析するように設計されています。最適なパフォーマンスを確保し、システムリソースの枯渇を防ぐために、以下のことをお勧めします。

  1. 移行する特定のコードファイルのみを含める

  2. 不要なライブラリ依存関係を含めないようにする

依存関係のあるライブラリコードファイルを含めることはできますが、 SMA は移行が必要なSparkコードの識別に特化されているため、付加価値がないわりに処理時間が大幅に増加します。

以下のようなコードファイルをすべて収集することをお勧めします。

  • スケジュールされたプロセスの一部として自動的に実行されるもの

  • そのプロセスを作成または構成するために使用されたもの

  • 上記のいずれかのシナリオで使用される、組織が作成したカスタムライブラリ

PandasやSci-Kit Learnのような一般的なサードパーティライブラリのコードを含める必要はありません。このツールは、ソースコードを必要とせずに、これらのライブラリ参照を自動的に検出し、カタログ化します。

実行可能かどうか

Snowpark Migration Accelerator(SMA)は、完全で構文的に正しいソースコードのみを処理できます。ご使用のコードは、 サポートされているソースプラットフォーム で正常に実行できなければなりません。SMA が複数の 解析エラー を報告した場合、これは通常、ソースコードに構文エラーが含まれていることを示しています。最良の結果を得るには、入力ディレクトリにソースプラットフォームで実行可能な有効なコードのみを含めるようにしてください。

ユースケース

スキャン結果を確認する際には、コードベースの目的を理解することが不可欠です。以下の助けになります。

  1. Snowparkと相性の悪いアプリケーションやプロセスを特定する

  2. レディネス評価の結果をより効果的に理解し、分析する

  3. 既存のコードとシステムがSnowflakeと互換性があるかどうかを確認する

サポートされていない SQL 方言とSparkを使用しないデータベースコネクタを使用するノートブックをスキャンすると、 SMA はインポートされたサードパーティライブラリのみを表示します。この情報は役に立ちますが、ノートブックはSpark API レディネススコアを受け取りません。コードをどのように使用する予定かを理解することで、これらの制限をよりよく理解し、移行時により良い決定を下すことができます。

Databricks Notebooksからのエクスポート

Databricksノートブックは、 SQL、Scala、 PySpark などの複数のプログラミング言語を1つのノートブックでサポートしています。ノートブックをエクスポートすると、ファイルの拡張子に主要言語が反映されます。

  • Pythonノートブック: .ipynbまたは.py

  • SQL ノートブック: .sql

ノートブックの主要言語と異なる言語で書かれたコードは、エクスポート時に自動でコメントに変換されます。たとえば、 SQL コードをPythonノートブックに含めると、 SQL コードはエクスポートされたファイルにコメントとして表示されます。

エクスポート時のコメント付きコード

コードコメントは SMA 分析から除外されます。コードが適切に分析されるように、ソース言語に合った正しい拡張子のファイルにコードを入れます。例:

  • Pythonコードは、.pyファイルに入れる必要があります

  • SQL コードは、.sqlファイルに入れる必要があります

コメントアウトされていないコードであっても、間違った拡張子のファイル(例: .sqlファイル内にPythonコード)にある場合は分析されないことに注意してください。

ツールを使用する前に、ドキュメントの 前処理時の考慮事項 セクションをご覧ください。このセクションには、作業を進める前に知っておくべき重要な情報が記載されています。

ウォークスルーコードベース

Snowpark Migration Accelerator(SMA)の入力として、抽出したサンプルコードベースディレクトリのいずれかを選択します。

コードを移行するときは、元のフォルダー構造を維持します。これにより、ファイル構成が保持され、開発者がコードアーキテクチャを理解しやすくなります。コード変換プロセスも評価分析も、1ファイルずつ実行されます。

このチュートリアルでは、小型の関数Sparkコードサンプル(それぞれ 1MB 未満)を使用します。これらのサンプルは、さまざまなシナリオと変換可能な関数を示しています。これらの例は簡易バージョンであり、実稼働のコードではありませんが、さまざまな変換の可能性を効果的に示しています。

ソースディレクトリには、Jupyterノートブック(.ipynb)、Pythonスクリプト(.py)、テキストファイルを置くことができます。SMA はコードベース内のすべてのファイルを調査しますが、Python(.py)ファイルとJupyterノートブック(.ipynb)ファイル内のSpark API 参照のみを検索します。