사용자 지정 IOutputter의 결과를 로컬 디스크의 중간 파일에 쓰려고합니다.Azure 데이터 레이크 분석 IOutputter E_RUNTIME_USER_ROWTOOBIG
그 후 데이터베이스 파일 (~ 20MB)을 adl 출력 저장소에 복사하려고합니다.
안타깝게도 스크립트로 종결 :
'Microsoft.Cosmos.ScopeStudio.BusinessObjects.Debugger.ScopeDebugException' 가 Microsoft.Cosmos.ScopeStudio.BusinessObjects.Debugger.dll
발생 유형의 처리되지 않은 예외추가 정보 : "진단 코드": 195887112, "심각도": "오류", "구성 요소": "실행 시간" " 행이 최대 허용 크기 인 을 초과했습니다. "행이 최대 허용 크기 인 4MB를 초과했습니다.", "internalDiagnostics": " 7ffe97231797 \"4MB ","설명 ":" 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 (NO 모듈)! (이름) \ @ 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");
}
}
이 문제에 대한 아이디어가 있으십니까?
답장을 보내 주셔서 감사합니다. 하지만 FileCopyUDO로 문제를 해결할 수 없습니다. output.BaseStream의 Output 함수에서 직접 StreamWriter로 쓰고있을 때 나는 4MB 제한을 결코 넘지 않을 것입니다. 내 문제는 내 데이터베이스에 output.BaseStream을 전달할 수없는 내장 데이터베이스를 사용한다는 것입니다. 나는 파일 경로로 데이터베이스를 사용할 수 있습니다. 결과 데이터베이스 파일은 정점에 국한됩니다. 이제 추가 처리를 위해 ADL에서 로컬 파일을 사용할 수있는 방법을 찾을 수 없습니다. – coalmee