Ich habe eine json
-Datei, nodes
, die so aussieht:
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
Dies führt jedoch zu einem corrupt_record
Fehler:
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
.
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.
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.
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%Tags und Links scala json apache-spark