失敗した U-SQL ジョブのユーザー定義 C# コードをデバッグする
重要
Azure Data Lake Analytics は 2024 年 2 月 29 日に廃止されました。 このお知らせで詳細を学びましょう。
データ分析の場合、組織は 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 再頒布可能更新プログラム 3 と ユニバーサル C ランタイム for Windows の 2 つの更新プログラムが必要です。
失敗した頂点をローカル コンピューターにダウンロードする
Azure Data Lake Tools for Visual Studio で失敗したジョブを開くと、エラー タブに詳細なエラー メッセージが表示された黄色のアラート バーが表示されます。
[ ダウンロード ] を選択して、必要なすべてのリソースと入力ストリームをダウンロードします。 ダウンロードが完了しない場合は、[再試行] を選択 します。
ダウンロードの完了後に [開く ] を選択して、ローカル デバッグ環境を生成します。 新しいデバッグ ソリューションが開き、Visual Studio で既存のソリューションを開いている場合は、必ず保存して閉じてからデバッグしてください。
デバッグ環境を構成する
注
デバッグする前に、[例外設定] ウィンドウで共通 言語ランタイム例外 を確認してください (Ctrl + Alt + E)。
新しく起動された Visual Studio インスタンスでは、ユーザー定義の C# ソース コードが見つかる場合と見つからない場合があります。
ソース コードはデバッグ ソリューションに含まれています
C# ソース コードがキャプチャされるケースは 2 つあります。
ユーザー コードは分離コード ファイルで定義されます (通常、U-SQL プロジェクトでは
Script.usql.cs
という名前)。ユーザー コードは U-SQL アプリケーションの C# クラス ライブラリ プロジェクトで定義され、 デバッグ情報を含むアセンブリとして登録されます。
ソース コードがソリューションにインポートされている場合は、Visual Studio デバッグ ツール (ウォッチ、変数など) を使用して問題のトラブルシューティングを行うことができます。
F5 キーを押してデバッグを開始します。 コードは、例外によって停止されるまで実行されます。
ソース コード ファイルを開き、ブレークポイントを設定し、 F5 キーを押してコードを段階的にデバッグします。
デバッグ ソリューションにソース コードが含まれていない
ユーザー コードが分離コード ファイルに含まれていない場合、または アセンブリをデバッグ情報に登録しなかった場合、ソース コードはデバッグ ソリューションに自動的に含まれません。 この場合は、ソース コードを追加するための追加の手順が必要です。
ソリューション 'VertexDebug' >既存のプロジェクト>追加... を右クリックして、アセンブリのソース コードを検索し、デバッグ ソリューションにプロジェクトを追加します。
FailedVertexDebugHost プロジェクトのプロジェクト フォルダー パスを取得します。
Right-Click 追加したアセンブリ ソース コード プロジェクト> プロパティ を開き、左側にある [ビルド] タブを選択し、\bin\debug で終わるコピーしたパスを >出力パスとして貼り付けます。 最終的な出力パスは、
<DataLakeTemp path>\fd91dd21-776e-4729-a78b-81ad85a4fba6\loiu0t1y.mfo\FailedVertexDebug\FailedVertexDebugHost\bin\Debug\
のようになります。
これらの設定の後、 F5 とブレークポイントを使用してデバッグを開始します。 Visual Studio デバッグ ツール (ウォッチ、変数など) を使用して問題のトラブルシューティングを行うこともできます。
注
更新された .pdb ファイルを生成するようにコードを変更した後、毎回アセンブリ ソース コード プロジェクトをリビルドします。
ジョブを再送信してください
デバッグ後、プロジェクトが正常に完了すると、出力ウィンドウに次のメッセージが表示されます。
The Program 'LocalVertexHost.exe' has exited with code 0 (0x0).
失敗したジョブを再送信するには:
分離コード ソリューションを使用するジョブの場合は、C# コードを分離コード ソース ファイル (通常は
Script.usql.cs
) にコピーします。アセンブリを含むジョブの場合は、デバッグ ソリューションでアセンブリ ソース コード プロジェクトを右クリックし、更新された .dll アセンブリを Azure Data Lake カタログに登録します。
U-SQL ジョブを再送信します。