2016-03-22 11 views
2

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

エラーメッセージ:

Vertex failure triggered quick job abort. Vertex failed: SV1_Extract[0][0] with error: Vertex user code error. Vertex failed with a fail-fast error

スクリプトコード:背後

@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 
... 

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

"入力ストリームに予期しない列数があります。" - "description": "1行目の入力レコード内に予期しない列数があります。\ n 2列目が予想されます-は1列のうち1行を処理しました。 - "resolution": "入力にエラーがないかどうかチェックするか、"サイレント "スイッチを使用して入力内の大きすぎる行を無視します。\ n"無効な "行を無視するとジョブの結果に影響する場合があります。

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

+1

これは私の質問に対する回答です:[msdn] https://social.msdn.microsoft.com/Forums/azure/en-US/822af591-f098-4592-b903-d0dbf7aafb2d/vertex-failure-triggered-quick -job-abort-exception-throw中のデータ抽出?forum = AzureDataLake – mieszko91

答えて

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を使用するカスタム抽出プログラムで同様のエラーメッセージが表示され、分割に影響されないようにするには、私に事件を提出し、エンジニアリングチームがケースを審査するようにジョブリンクを送信してください。

関連する問題