2017-01-08 8 views
0

カスタムIOutputterの結果をローカルディスク上の中間ファイルに書き込もうとしています。Azure Data Lake Analytics IOutputter E_RUNTIME_USER_ROWTOOBIG

その後、データベースファイル(〜20MB)をadl出力ストアにコピーします。

悲しいことにスクリプトがで終了:

タイプ 'Microsoft.Cosmos.ScopeStudio.BusinessObjects.Debugger.ScopeDebugException' の未処理の例外がMicrosoft.Cosmos.ScopeStudio.BusinessObjects.Debugger.dll

で発生しました

追加情報: {"diagnosticCode":195887112、 "重大度": "エラー"、 "コンポーネント": "ランタイム"、 "ソース": "ユーザー"、 "errorId": "E_RUNTIME_USER_ROWTOOBIG"、 "message" " 行が最大許容サイズの を超えました"行が最大許容サイズ4MBを超えました"、 "internalDiagnostics": " 7ffe97231797 \"、 "description": ""、 "description" tScopeEngine!?ToStringInternal @ KeySampleCollection @SSLibV3 @ScopeEngine @AEAA?AV?$ basic_string @ DU?char_traits @D @ std @@ V?$ allocator @D @ 2 @ std @@ XZ + 11b7 \ t \ n 7ffe971d7261 \ tScopeEngine !? 0ExceptionWithStack @ ScopeEngine @@ QEAA @ W4ErrorNumber @ 1 @ AEBV?$ initializer_list @ VScopeErrorArg @ ScopeCommon @@@ std @@ _ N @ Z + 121 \ t \ n 7ffe971d7f6a \ tScopeEngine !? 0RuntimeException @ ScopeEngine @@ QEAA @ W4ErrorNumber @ 1 @ PEBD @ Z + AA \さt \ n個の7ffe6de06acaの\ tの(なしモジュール)!(名前なし)\トン\ nは

public class CustomOutputter : IOutputter 
    { 
     private Stream stream; 

     public override void Close() 
     { 
      base.Close(); 

      using (var fs = File.Open("mydb.data", FileMode.Open)) 
      { 
       fs.CopyTo(stream); 
      } 
     } 

     public override void Output(IRow input, IUnstructuredWriter output) 
     { 
      if(stream == null) 
       stream = output.BaseStream; 

      myDb.Insert("somestuff"); 
     } 
    } 

この問題に関するアイデアですか?

答えて

2

現在、USQLで読み書きされている行の長さに制限があり、そのサイズが4MBであることを示すエラーメッセージが表示されます。 CSVのようなレコード指向のファイルを使用すると、この制限に達するでしょう。

https://github.com/Azure/usql/tree/master/Examples/FileCopyUDOs/FileCopyUDOsでファイルをバイナリとして扱うのに役立つ、バイト指向のファイル読み書きUDOの例があります。これを使用して効果的にデータをチャンクすることができます。

+0

ご返信ありがとうございます。 しかし私はFileCopyUDOで私の問題を解決することができません。 出力関数で直接streamWriterをoutput.BaseStreamに書き込んでいるときに、私は4MBの制限に達することはありません。 私の問題は、組み込みのデータベースを使用して、output.BaseStreamをデータベースに渡して書き込めないことです。私は ファイルパスでデータベースを使用することができます。結果として得られるデータベースファイルは頂点に対してローカルになります。 これ以降の処理のために、ローカルファイルをADLで利用できるようにする方法が見つかりません。 – coalmee

関連する問題