JSON mit Apache Spark lesen - 'corrupt_record'

8

Ich habe eine json -Datei, nodes , die so aussieht:

%Vor%

Ich kann diesen Datensatz mit Python lesen und bearbeiten.

Ich versuche diese Datei in scala durch die spark-shell zu lesen.

Von diesem Tutorial kann ich es sehen kann json über sqlContext.read.json

gelesen werden %Vor%

Dies führt jedoch zu einem corrupt_record Fehler:

%Vor%

Kann jemand diesen Fehler etwas beleuchten? Ich kann die Datei mit anderen Anwendungen lesen und verwenden und ich bin zuversichtlich, dass es nicht beschädigt ist und Sound json .

    
LearningSlowly 11.08.2016, 11:25
quelle

3 Antworten

12

Spark kann das JSON-Array nicht in einem Datensatz auf der obersten Ebene lesen, daher müssen Sie Folgendes übergeben:

%Vor%

Wie es in Tutorial beschrieben ist, sind Sie Bezug nehmend auf:

  

Beginnen wir mit dem Laden einer JSON-Datei, wobei jede Zeile ein JSON-Objekt

ist

Die Argumentation ist ziemlich einfach. Spark erwartet, dass Sie eine Datei mit vielen JSON-Entities übergeben, damit sie ihre Verarbeitung verteilen kann (pro Entity, grob gesagt). Aus diesem Grund erwartet es, eine Entität auf der obersten Ebene zu analysieren, erhält aber ein Array, das einem Datensatz nicht zugeordnet werden kann, da es für diese Spalte keinen Namen gibt. Grundsätzlich (aber nicht genau) sieht Spark Ihr Array als eine Zeile mit einer Spalte und findet keinen Namen für diese Spalte.

Um mehr Licht darauf zu werfen, hier ist ein Zitat von dem offiziellen Dokument

  

Beachten Sie, dass die Datei, die als JSON-Datei angeboten wird, nicht typisch ist   JSON-Datei. Jede Zeile muss ein separates, in sich abgeschlossenes gültiges enthalten   JSON-Objekt. Als Konsequenz wird eine reguläre mehrzeilige JSON-Datei   Meistens scheitern.

Dieses Format wird oft JSONL genannt. Grundsätzlich ist es eine Alternative zu CSV.

    
dk14 11.08.2016, 11:48
quelle
4

So lesen Sie den mehrzeiligen JSON als Datenrahmen:

%Vor%

Das Lesen großer Dateien auf diese Weise wird nicht empfohlen, von Ganztextdokumente

  

Kleine Dateien werden bevorzugt, große Dateien sind ebenfalls zulässig, können jedoch eine schlechte Leistung verursachen.

    
Datageek 14.10.2017 14:44
quelle
0

Ich stoße auf das gleiche Problem. Ich habe sparkContext und sparkSql auf der gleichen Konfiguration verwendet:

%Vor%

Dann benutze ich den Spark-Kontext und lese die gesamte json (JSON - Pfad zu Datei) Datei:

%Vor%

Sie können ein Schema für zukünftige Selektionen, Filter ... erstellen.

%Vor%

Erstellen Sie einen Datenrahmen mit spark sql:

%Vor%

Zum Testen verwenden Sie show und printSchema:

%Vor%

sbt Build-Datei:

%Vor%     
Robert Gabriel 07.08.2017 15:29
quelle

Tags und Links