実行時の変更による U-SQL ランタイム エラーをトラブルシューティングする方法について説明します。
重要
Azure Data Lake Analyticsは、2024 年 2 月 29 日に廃止されました。 詳細については、このお知らせを参照してください。
データ分析の場合、organizationは Azure Synapse Analytics または Microsoft Fabric を使用できます。
コンパイラ、オプティマイザー、ジョブ マネージャーを含む Azure Data Lake の U-SQL ランタイムは、U-SQL コードを処理します。
U-SQL ランタイム バージョンの選択
Visual Studio、ADL SDK、または Azure Data Lake Analytics ポータルから U-SQL ジョブを送信すると、ジョブは現在使用可能な既定のランタイムを使用します。 U-SQL ランタイムの新しいバージョンは定期的にリリースされ、マイナー更新プログラムとセキュリティ修正プログラムの両方が含まれています。
カスタム ランタイム バージョンを選択することもできます。新しい更新プログラムを試したい、古いバージョンのランタイムを使用する必要がある、または定期的な新しい更新プログラムを待つできない報告された問題の修正プログラムが提供されているためです。
注意事項
既定のものとは異なるランタイムを選択すると、U-SQL ジョブが中断される可能性があります。 これらの他のバージョンは、テスト目的でのみ使用してください。
まれに、Microsoft サポートは別のバージョンのランタイムをアカウントの既定値としてピン留めできます。 できるだけ早くこのピンを元に戻してください。 そのバージョンに固定されていると、後日期限切れになります。
ジョブの U-SQL ランタイム バージョンの監視
Visual Studio のジョブ ブラウザーまたは Azure portal のジョブの履歴を使用して、過去のジョブによって使用されていたランタイム バージョンの履歴をアカウントのジョブ履歴で確認できます。
- Azure Portal で Data Lake Analytics アカウントに移動します。
- [すべてのジョブの表示] を選択します。 アカウントのすべてのアクティブなジョブと最近終了したジョブの一覧が表示されます。
- 必要に応じて、[ フィルター] を選択して、 時間範囲、 ジョブ名、および 作成者 の値でジョブを見つけることができます。
- 完了したジョブで使用されたランタイムを確認できます。
使用可能なランタイム バージョンは、時間の経過と共に変化します。 既定のランタイムは常に "default" と呼ばれ、以前のランタイムは少なくともしばらくの間使用でき、さまざまな理由で特別なランタイムを使用できるようにします。 明示的に指定されたランタイムは、通常、次の形式に従います (斜体は変数部分に使用され、[] は省略可能な部分を示します)。
release_YYYYMMDD_adl_buildno[_modifier]
たとえば、release_20190318_adl_3394512_2 は、2019 年 3 月 18 日のランタイム リリースのビルド 3394512 の 2 番目のバージョンを意味し、release_20190318_adl_3394512_private は同じリリースのプライベート ビルドを意味します。 注:この日付は、そのリリースの最終チェックインの実行日に関連付けられており、必ずしも正式なリリース日ではありません。
U-SQL ランタイム バージョンの問題のトラブルシューティング
次の 2 つのランタイム バージョンの問題が発生する可能性があります。
スクリプトまたは一部のユーザー コードによって、あるリリースから次のリリースにかけて動作が変更される場合。 このような重大な変更は、通常はリリース ノートの発行によって事前に伝達されます。 このような破壊的変更が発生した場合は、Microsoft サポートに連絡して、この破壊的動作を報告し (まだ文書化されていない場合)、古いランタイム バージョンに対してジョブを送信してください。
既定以外のランタイムは、アカウントにピン留めされ、そのランタイムがしばらくしてから削除された場合に、明示的または暗黙的に使用されています。 ランタイムの欠落が発生した場合は、スクリプトをアップグレードして、現在の既定のランタイムで実行するようにしてください。 さらに時間が必要な場合は、Microsoft サポートにお問い合わせください
既知の問題
USQL スクリプトで Newtonsoft.Json ファイル バージョン 12.0.3 またはそれ以降を参照すると、次のコンパイル エラーが発生します。
"申し訳ございません。お使いの Data Lake Analytics アカウントで実行中のジョブは実行速度が低下するか、完了できない可能性があります。 予期しない問題が発生したため、この機能を Azure Data Lake Analytics アカウントに自動的に復元できません。 調査のために Azure Data Lake エンジニアへ問題が送信されました。"
呼び出し履歴には次のものが含まれます。
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Roslyn.Compilers.MetadataReader.PEFile.CustomAttributeTableReader.get_Item(UInt32 rowId)
...
解決策: Newtonsoft.Json ファイル v12.0.2 以降を使用します。
一時的なファイルやフォルダーが顧客に、その顧客が利用しているストアで表示されることがあります。 それらは通常のジョブ実行の一環として生成されるものですが、通常、顧客の目に入る前に削除されます。 まれでランダムな特定の状況では、表示されたままになる可能性があります。 最終的に削除され、ユーザー ストレージの一部としてカウントされたり、いかなる形式の料金も生成されたりすることはありません。 顧客のジョブ ロジックによっては、問題を引き起こすことがあります。 たとえば、ジョブによってフォルダー内の全ファイルが列挙され、ファイル一覧が比較される場合、予想外の一時的なファイルが存在するため、比較できないことがあります。 同様に、下流のジョブにより、その後の処理のために、所与のフォルダーから全ファイルが列挙される場合、一時的なファイルも列挙されることがあります。
解決策: 修正プログラムは、現在の出力フォルダーではなく、一時ファイルがアカウント レベルの一時フォルダーに格納されるランタイムで識別されます。 一時的なファイルはこの新しい一時的なフォルダーに書き込まれ、ジョブ実行の終了時に削除されます。
この修正プログラムは顧客データを処理するため、リリース前に MSFT 内でこの修正プログラムを適切に検証することが重要です。 この修正プログラムは、2021 年半ばにベータ ランタイムとして、2021 年後半に既定のランタイムとして使用できる予定です。