2017-05-24 9 views
0

USQL을 사용하여 ADLA에서 처리하는 JSON 파일이 여러 개 있습니다. 첫 번째 작업은 Microsoft.Analytics.Samples.Formats.Json JsonExtractor를 사용하여 각각에서 데이터를 추출하는 것입니다. 대부분의 파일 (80 %?)은 가장 큰 파일을 포함하여 정상적으로 처리되지만 일부 파일은 실패하고 이유는 알지 못합니다. 여기USQL의 JSON 비 직렬화로 인해 문자열 제한이 발생합니다.

REFERENCE ASSEMBLY [Newtonsoft.Json]; 
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats]; 

DECLARE @input string="adl://abc.azuredatalakestore.net/data/whatever.json"; 

DECLARE @out string="adl://out.csv"; 

USING Microsoft.Analytics.Samples.Formats.Json; 

@data = 
EXTRACT SourceUrl string, 
     Title string, 
     Guest string, 
     PublishDate DateTime, 
     TranscriptionSections string, 
     Categories string, 
     filename string 
FROM @input 
USING new JsonExtractor(); 

OUTPUT @data 
TO @out 
USING Outputters.Tsv(outputHeader : true); 

을 푸른에서 오류 발생 : I 후

{ 
"SourceUrl":"http://www.unittest.org/test.html", 
"Title":"Unit Test File", 
"Guest":"Unit Test Guest", 
"PublishDate":"2017-05-15T00:00:00", 
"TranscriptionSections":[ 
    { 
    "SectionStartTime":"00:00:03", 
    "Sentences":[ 
     { 
     "Text":"Intro." 
     }, 
     { 
     "Text":"Sentence one" 
     }, 
     { 
     "Text":"Sentence two" 
     } 
    ] 
}, 
{ 
    "SectionStartTime":"00:04:46", 
    "Sentences":[ 
     { 
     "Text":"Sentence three" 
     }, 
     { 
     "Text":"Sentence four" 
     } 
    ] 
} 
], 
"Categories":null 
} 

: 여기

**Inner Error:** 
ERROR 
E_RUNTIME_USER_STRINGTOOBIG 

MESSAGE 
String size 132991 exceeds the maximum allowed size of 131072. 

**Outer Error:** 
DESCRIPTION 
Vertex failure triggered quick job abort. Vertex failed: SV1_Extract_Partition[0] with error: Vertex user code error. 
RESOLUTION 
DETAILS 

Vertex SV1_Extract_Partition[0].v1 {8F874C31-C803-4C9A-9C3F-B594A62D7EAC} failed 

Error: 
Vertex user code error 

exitcode=CsExitCode_StillActive Errorsnippet= 
ERROR 
VertexFailedFast 
MESSAGE 
Vertex failed with a fail-fast error 

내가 사용하고 파일의 예 다음은 실패 코드의 최소한의 예입니다 이 첫 번째 추출 할, TranscriptionSections 문자열을 더 많은 행으로 deserialize 위해 다른 USQL 문을 실행합니다. 아마도 그것은 오류이며 한 문장으로 JSON 파일을 완전히 평평하게하는 방법이 있습니다.

답변

1

오류가 발생하는 것은 문자열 열 중 하나가 허용되는 최대 문자열 크기를 초과한다는 것입니다. 허용 된 최대 문자열 크기는 128KB입니다. 이 시점에서 두 가지 대안이 있습니다. 1. 열을 두 개의 열로 나눌 수있는 자체 json 추출기를 작성하십시오. 2. byte [] 데이터 유형을 사용하십시오.