失敗した U-SQL ジョブに対するユーザー定義の C# コードをデバッグする
重要
Azure Data Lake Analyticsは、2024 年 2 月 29 日に廃止されました。 詳細については、このお知らせを参照してください。
データ分析の場合、organizationは Azure Synapse Analytics または Microsoft Fabric を使用できます。
U-SQL は C# を使用した機能拡張モデルを提供しています。 U-SQL スクリプトでは、C# 関数を呼び出して、SQL に似た宣言型言語ではサポートされていない分析関数を簡単に実行できます。 U-SQL 機能拡張の詳細については、「U-SQL プログラミング ガイド」を参照してください。
実際には、どのコードでもデバッグが必要になる可能性がありますが、ログ ファイルが限られているクラウド上のカスタム コードを使用して分散ジョブをデバッグするのは困難です。 Azure Data Lake Tools for Visual Studio には失敗した頂点のデバッグと呼ばれる機能が用意されており、カスタム コードで発生したエラーをより簡単にデバッグするのに役立ちます。 U-SQL ジョブが失敗すると、サービスではエラーの状態が維持されます。このツールは、クラウドのエラー環境をローカル マシンにダウンロードしてデバッグするうえで役立ちます。 ローカルのダウンロードには、入力データとユーザー コードを含むクラウド環境全体がキャプチャされています。
次のビデオでは、Azure Data Lake Tools for Visual Studio の失敗した頂点のデバッグ機能をデモンストレーションします。
重要
Visual Studio でこの機能を使用するには、Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3 と Windows ユニバーサル C ランタイムの 2 つの更新プログラムが必要です。
失敗した頂点をローカル コンピューターにダウンロードする
Azure Data Lake Tools for Visual Studio で失敗したジョブを開くと、詳細なエラー メッセージが記載された警告バーがエラー タブに表示されます。
[ ダウンロード ] を選択して、必要なすべてのリソースと入力ストリームをダウンロードします。 ダウンロードが完了しない場合は、[再試行] を選択 します。
ダウンロードが完了したら [ 開く ] を選択して、ローカル デバッグ環境を生成します。 新しいデバッグ ソリューションが開きます。Visual Studio で既存のソリューションを開いている場合は、デバッグする前に必ず保存してから閉じてください。
デバッグ環境を構成する
Note
デバッグする前に、[例外設定] ウィンドウ (Ctrl + Alt + E) で [Common Language Runtime Exceptions]\(共通言語ランタイム例外\) をチェックしてください。
新しく起動された Visual Studio インスタンスでは、ユーザー定義の C# ソース コードが見つかる場合と見つからない場合があります。
ソース コードがデバッグ ソリューションに含まれている
C# ソース コードがキャプチャされるケースは 2 つあります。
ユーザー コードは、分離コード ファイルで定義されています (通常、U-SQL プロジェクトでは
Script.usql.cs
という名前です)。ユーザー コードは、U-SQL アプリケーションの C# クラス ライブラリ プロジェクトで定義され、アセンブリとしてデバッグ情報に登録されます。
ソース コードがソリューションにインポートされている場合、Visual Studio のデバッグ ツール (ウォッチ、変数など) を使用して、問題のトラブルシューティングを行うことができます。
F5 キーを押してデバッグを開始します。 コードは、例外によって停止されるまで実行されます。
ソース コード ファイルを開いて、ブレークポイントを設定してから、F5 キーを押して、ステップ バイ ステップでコードをデバッグします。
ソース コードはデバッグ ソリューションに含まれていません
ユーザー コードが分離コード ファイルに含まれていない場合、またはアセンブリを デバッグ情報に登録しなかった場合、ソース コードはデバッグ ソリューションに自動的に含まれません。 この場合は、ソース コードを追加する手順が別に必要になります。
[ソリューション 'VertexDebug'] を右クリック > [追加] > [既存のプロジェクト] の順に選択し、アセンブリのソース コードを検索し、プロジェクトをデバッグ ソリューションに追加します。
FailedVertexDebugHost プロジェクトのプロジェクト フォルダー パスを取得します。
追加されたアセンブリのソース コード プロジェクトを右クリック > [プロパティ] で、左側にある [ビルド] タブを選択し、末尾が \bin\debug のコピーしパスを [出力] > [出力パス] に貼り付けます。 最終的な出力パスは次のようになります。
<DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\
この設定の後、F5 キーとブレークポイントを使用してデバッグを開始します。 Visual Studio のデバッグ ツール (ウォッチ、変数など) を使用して、問題をトラブルシューティングすることもできます。
Note
コードを変更して更新された PDB ファイルを生成するたびに、アセンブリのソース コード プロジェクトをリビルドします。
ジョブを再送信する
デバッグが終了し、プロジェクトが正常に完了すると、出力ウィンドウに次のメッセージが表示されます。
The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).
失敗したジョブを再送信するには:
分離コード ソリューションのジョブの場合は、C# コードを、分離コードのソース ファイル (通常は
Script.usql.cs
) に コピーします。アセンブリのジョブの場合は、デバッグ ソリューションで、アセンブリ ソース コード プロジェクトを右クリックし、更新された .dll アセンブリを Azure Data Lake カタログに登録します。
U-SQL ジョブを再送信します。