Ich versuche, eine Spark-RDD aus mehreren JSON-Dateien zu erstellen, die zu einem tar komprimiert sind. Zum Beispiel, ich habe 3 DateienEinlesen mehrerer komprimierter Dateien im tar.gz-Archiv nach Spark
file1.json
file2.json
file3.json
Und diese sind in archive.tar.gz
enthalten.
Ich möchte einen Datenrahmen aus den JSON-Dateien erstellen. Das Problem ist, dass Spark die JSON-Dateien nicht korrekt liest. Das Erstellen einer RDD mit sqlContext.read.json("archive.tar.gz")
oder sc.textFile("archive.tar.gz")
führt zu einer verzerrten/zusätzlichen Ausgabe.
Gibt es eine Möglichkeit, Gzip-Archive mit mehreren Dateien in Spark zu behandeln?
UPDATE
Mit Hilfe der in der Antwort-Methode Read whole text files from a compression in Spark konnte ich die Dinge zum Laufen bringen, aber diese Methode scheint nicht für große tar.gz-Archive geeignet zu sein (> 200 mb komprimiert) als Die Anwendung scheitert an großen Archivgrößen. Da einige der Archive, mit denen ich es zu tun habe, Größen bis zu 2 GB nach der Komprimierung erreichen, frage ich mich, ob es einen effizienten Weg gibt, mit dem Problem umzugehen.
Ich versuche zu vermeiden, die Archive zu extrahieren und dann die Dateien zusammenzuführen, da dies zeitaufwändig wäre.
Ich habe das gleiche Problem mit großen Dateien, haben Sie eine Lösung gefunden (anders als manuell entpacken und dann zu funken)? :) – ixaxaar
@ixaxaar, ich habe alle Tar-Archive in Hadoop-Sequenzdateien konvertiert, mit denen Spark gut funktioniert. https://stuartsierra.com/2008/04/24/a-million-little-files – septra
vielen Dank für das Glas! Ich habe tatsächlich 50 Tar-Dateien, jede mit einer Million kleinen (JSON) Dateien: D – ixaxaar