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 파일을 완전히 평평하게하는 방법이 있습니다.