2

データ レイク分析ジョブを実行していますが、抽出中にエラーが発生します。私は自分のスクリプトで TEXT エクストラクタと独自のエクストラクタを使用しています。スペース文字で区切られた 2 つの列を含むファイルからデータを取得しようとしています。スクリプトをローカルで実行するとすべて正常に動作しますが、DLA アカウントを使用してスクリプトを実行しようとするとうまくいきません。何千もの行を持つファイルからデータを取得しようとした場合にのみ問題が発生します (ただし、データは 36 MB のみ)。小さなファイルの場合、すべてが正しく機能します。頂点の総数が抽出ノードの総数よりも多い場合に例外がスローされることに気付きました。他の「大きな」ファイル(.csv、.tsv)と抽出プログラムを使用して、この問題に遭遇しました。誰かが私に何が起こるか教えてもらえますか?

エラーメッセージ:

頂点の失敗により、クイック ジョブが中止されました。頂点が失敗しました: SV1_Extract[0][0] エラー: 頂点ユーザー コード エラー。頂点がフェイルファスト エラーで失敗しました

スクリプト コード:

@result =
EXTRACT s_date string,
        s_time string
FROM @"/Samples/napis.txt"
//USING USQLApplicationTest.ExtractorsFactory.getExtractor();
USING Extractors.Text(delimiter:' ');

OUTPUT @result
TO @"/Out/Napis.log"
USING Outputters.Csv();

コードビハインド:

[SqlUserDefinedExtractor(AtomicFileProcessing = true)]
public class MyExtractor : IExtractor
{
    public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow output)
    {
        using (StreamReader sr = new StreamReader(input.BaseStream))
        {
            string line;
            // Read and display lines from the file until the end of 
            // the file is reached.
            while ((line = sr.ReadLine()) != null)
            {
                string[] words = line.Split(' ');
                int i = 0;
                foreach (var c in output.Schema)
                {
                    output.Set<object>(c.Name, words[i]);
                    i++;
                }

                yield return output.AsReadOnly();
            }
        }
    }
}

public static class ExtractorsFactory
{
    public static IExtractor getExtractor()
    {
        return new MyExtractor();
    }
}

サンプル ファイルの一部:

...
str1 str2
str1 str2
str1 str2
str1 str2
str1 str2
...

ジョブ リソースで、jobError メッセージが見つかりました:

"入力ストリームの予期しない列数。"-"説明":"行 1 の入力レコードの予期しない列数。\n予期された 2 列 - 1 列のうち 1 列を処理。エラーを検出するか、\"silent\" スイッチを使用して、入力内のサイズが大きすぎる (小さすぎる) 行を無視します。\n\"無効な\" 行を無視すると、ジョブの結果に影響する可能性があることを考慮してください。

しかし、ファイルをもう一度確認したところ、間違った列数は表示されません。ファイルの分割と配布が正しくないためにエラーが発生する可能性はありますか? 大きなファイルを並行して抽出できることを読みました。下手な英語でごめんなさい。

4

1 に答える 1

0

同じ質問がここで回答されました: https://social.msdn.microsoft.com/Forums/en-US/822af591-f098-4592-b903-d0dbf7aafb2d/vertex-failure-triggered-quick-job-abort-exception-thrown -during-data-extraction?forum=AzureDataLake .

概要:

現在、「間違った」ツールを使用してファイルをアップロードすると、行がファイル範囲の境界に揃えられないという大きなファイルの問題があります。Visual Studio または Powershell コマンドを使用して行指向のファイルとしてアップロードする場合は、位置合わせする必要があります (行区切り文字が CR または LF の場合)。「適切な」アップロード ツールを使用しなかった場合、ビルトイン エクストラクタは、報告された動作を示します。これは、並列処理のためにファイルを分割した範囲にレコード境界が整列していると現在想定しているためです。現在、一般的な修正に取り組んでいます。

AtomicFileProcessing=true を使用するカスタム エクストラクタで同様のエラー メッセージが表示され、分割の影響を受けない場合は、ジョブ リンクを送信してください。インシデントを報告し、エンジニアリング チームにケースを確認してもらいます。

于 2016-03-23T20:52:23.003 に答える