2017-05-24 4 views
0

私はADLAでUSQLを使用して処理している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); 

ここアズールからのエラーがあります:

**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 

ここで私が使用しているファイルの例です:

{ 
"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 
} 

I後この最初の抽出を行います、私はTranscriptionSections文字列をより多くの行に逆直列化する別のUSQL文を実行します。おそらくこれはエラーで、JSONファイルを1つのステートメントで完全に平坦化する方法があります。

答えて

1

エラーは、文字列の1つが最大許容文字列サイズを超えていることです。許容される最大文字列サイズは128KBです。この時点で、2つの選択肢があります。1.カラムを2つのカラムに分割できるようにする独自のjson抽出プログラムを作成する。2. byte []データ型を使用する。

関連する問題