PySpark JSON lesen()

Pyspark Json Lesen



Bei der Arbeit mit PySpark DataFrames müssen diese im PySpark DataFrame gespeichert werden, wenn Sie die JSON-Daten verarbeiten möchten. Nach der Speicherung im DataFrame können wir die verschiedenen Operationen und Methoden auf die Daten anwenden. Außerdem bietet die Konvertierung von JSON in PySpark DataFrame viele Vorteile, da dies einfach ist und wir die Daten auf einfachere Weise transformieren/partitionieren können.

Inhaltsthema:

JSON mit Pandas.read_json() in den PySpark-DataFrame einlesen







Lesen von JSON in PySpark DataFrame mit Spark.read.json()



Lesen von JSON in PySpark DataFrame mithilfe von PySpark SQL



In diesem Tutorial schauen wir uns an, wie man JSON mit pandas.read_json(), spark.read.json() und spark.sql in den PySpark DataFrame einliest. In allen Szenarien werden wir uns die verschiedenen Beispiele ansehen und dabei die verschiedenen JSON-Formate berücksichtigen.





Installieren Sie die PySpark-Bibliothek, bevor Sie die folgenden Beispiele implementieren.

Pip Pyspark installieren

Nach der erfolgreichen Installation sehen Sie die Ausgabe wie folgt:



JSON mit Pandas.read_json() in den PySpark-DataFrame einlesen

In PySpark wird die Methode createDataFrame() verwendet, um den DataFrame direkt zu erstellen. Hier müssen wir lediglich die JSON-Datei/den JSON-Pfad über die Methode pandas.read_json() an die JSON-Datei übergeben. Diese read_json()-Methode verwendet den Dateinamen/Pfad, der im Pandas-Modul verfügbar ist. Aus diesem Grund ist es notwendig, das Pandas-Modul zu importieren und zu nutzen.

Syntax:

spark_app.createDataFrame(pandas.read_json( 'Dateiname.json' ))

Beispiel:

Erstellen wir eine JSON-Datei mit dem Namen „student_skill.json“, die zwei Datensätze enthält. Hier sind die Schlüssel/Spalten „Student 1“ und „Student 2“. Die Zeilen lauten „Name“, „Alter“, „Skill1“ und „Skill2“.

Pyspark importieren

Pandas importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Verwendung von pandas.read_json()

Candidate_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

Candidate_skills.show()

Ausgang:

Wir können sehen, dass die JSON-Daten mit angegebenen Spalten und Zeilen in PySpark DataFrame konvertiert werden.

2. JSON mit Spark.read.json() in PySpark DataFrame lesen

read.json() ist eine Methode, die read_json() in Pandas ähnelt. Hier nimmt read.json() einen Pfad zu JSON oder direkt zu einer JSON-Datei und lädt diese direkt in den PySpark DataFrame. In diesem Szenario ist die Verwendung der Methode createDataFrame() nicht erforderlich. Wenn Sie mehrere JSON-Dateien gleichzeitig lesen möchten, müssen wir eine Liste mit JSON-Dateinamen durch eine durch Komma getrennte Liste übergeben. Alle JSON-Datensätze werden in einem einzigen DataFrame gespeichert.

Syntax:

Einzelne Datei – spark_app.read.json( 'Dateiname.json' )

Mehrere Dateien – spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Szenario 1: JSON mit einer einzigen Zeile lesen

Wenn Ihre JSON-Datei in den Formaten Datensatz1, Datensatz2, Datensatz3… (einzeilig) vorliegt, können wir sie als JSON mit einzelnen Zeilen bezeichnen. Spark verarbeitet diese Datensätze und speichert sie als Zeilen im PySpark DataFrame. Jeder Datensatz ist eine Zeile im PySpark DataFrame.

Erstellen wir eine JSON-Datei mit dem Namen „candidate_skills.json“, die drei Datensätze enthält. Lesen Sie diesen JSON in den PySpark DataFrame ein.

Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Candidate_skills.json in den PySpark DataFrame einlesen

Candidate_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

Candidate_skills.show()

Ausgang:

Wir können sehen, dass die JSON-Daten mit angegebenen Datensätzen und Spaltennamen in PySpark DataFrame konvertiert werden.

Szenario 2: JSON mit mehreren Zeilen lesen

Wenn Ihre JSON-Datei mehrere Zeilen enthält, müssen Sie die Methode read.option().json() verwenden, um den Multiline-Parameter zu übergeben, der auf true gesetzt werden muss. Dadurch können wir JSON mit mehreren Zeilen in den PySpark DataFrame laden.

Wiederaufnahme( „mehrzeilig“ , 'WAHR' ).json( „Dateiname.json“ )

Erstellen wir eine JSON-Datei mit dem Namen „multi.json“, die drei Datensätze enthält. Lesen Sie diesen JSON in den PySpark DataFrame ein.

Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Lesen Sie multi.json (mit mehreren Zeilen) in den PySpark DataFrame ein

Candidate_skills = linuxhint_spark_app.read.option( „mehrzeilig“ , 'WAHR' ).json( „multi.json“ )

Candidate_skills.show()

Ausgang:

Szenario 3: Mehrere JSON lesen

Wir haben bereits in der Anfangsphase dieses Tutorials über mehrere JSON-Dateien gesprochen. Wenn Sie mehrere JSON-Dateien gleichzeitig lesen und in einem einzigen PySpark DataFrame speichern möchten, müssen wir eine Liste mit Dateinamen an die Methode read.json() übergeben.

Erstellen wir zwei JSON-Dateien mit den Namen „candidate_skills.json“ und „candidate_skills2.json“ und laden sie in den PySpark DataFrame.

Die Datei „candidate_skills.json“ enthält drei Datensätze.

Die Datei „candidate_skill2.json“ enthält nur einen einzigen Datensatz.

Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Candidate_skills- und Candidate_skills2-Dateien gleichzeitig in den PySpark DataFrame einlesen

Candidate_skills = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])

Candidate_skills.show()

Ausgang:

Schließlich enthält der DataFrame vier Datensätze. Die ersten drei Datensätze gehören zum ersten JSON und die letzten Datensätze gehören zum zweiten JSON.

Lesen von JSON in PySpark DataFrame mit Spark.read.json()

read.json() ist eine Methode, die read_json() in Pandas ähnelt. Hier nimmt read.json() einen Pfad zu JSON oder direkt zu einer JSON-Datei und lädt diese direkt in den PySpark DataFrame. In diesem Szenario ist die Verwendung der Methode createDataFrame() nicht erforderlich. Wenn Sie mehrere JSON-Dateien gleichzeitig lesen möchten, müssen wir eine Liste mit JSON-Dateinamen durch eine durch Komma getrennte Liste übergeben. Alle JSON-Datensätze werden in einem einzigen DataFrame gespeichert.

Syntax:

Einzelne Datei – spark_app.read.json( 'Dateiname.json' )

Mehrere Dateien – spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Szenario 1: JSON mit einer einzigen Zeile lesen

Wenn Ihre JSON-Datei im Format „Datensatz1, Datensatz2, Datensatz3…“ (einzeilig) vorliegt, können wir sie als „JSON mit einzelnen Zeilen“ bezeichnen. Spark verarbeitet diese Datensätze und speichert sie als Zeilen im PySpark DataFrame. Jeder Datensatz ist eine Zeile im PySpark DataFrame.

Erstellen wir eine JSON-Datei mit dem Namen „candidate_skills.json“, die drei Datensätze enthält. Lesen Sie diesen JSON in den PySpark DataFrame ein.

Pyspark importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Candidate_skills.json in den PySpark DataFrame einlesen

Candidate_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

Candidate_skills.show()

Ausgang:

Wir können sehen, dass die JSON-Daten mit angegebenen Datensätzen und Spaltennamen in PySpark DataFrame konvertiert werden.

Lesen von JSON in PySpark DataFrame mithilfe von PySpark SQL

Es kann möglich sein, mithilfe von PySpark SQL eine temporäre Ansicht unserer JSON-Daten zu erstellen. Wir können den JSON-Code direkt zum Zeitpunkt der Erstellung der temporären Ansicht bereitstellen. Schauen Sie sich die folgende Syntax an. Danach können wir den SELECT-Befehl verwenden, um den PySpark DataFrame anzuzeigen.

Syntax:

spark_app.sql( „TEMPORÄRE ANSICHT VIEW_NAME MIT JSON-OPTIONEN ERSTELLEN (Pfad ‚Dateiname.json‘)“ )

Hier ist „VIEW_NAME“ die Ansicht der JSON-Daten und „file_name“ der Name der JSON-Datei.

Beispiel 1:

Betrachten Sie die JSON-Datei, die in den vorherigen Beispielen verwendet wurde – „candidate_skills.json“. Wählen Sie alle Zeilen aus dem DataFrame aus, indem Sie SELECT mit dem Operator „*“ verwenden. Hier wählt * alle Spalten aus dem PySpark DataFrame aus.

Pyspark importieren

Pandas importieren

aus pyspark.sql SparkSession importieren

linuxhint_spark_app = SparkSession.builder.appName( „Linux-Hinweis“ ).getOrCreate()

# Verwenden von spark.sql, um VIEW aus dem JSON zu erstellen

Candidate_skills = linuxhint_spark_app.sql( „TEMPORÄRE ANSICHT Candidate_data MIT JSON-OPTIONEN ERSTELLEN (Pfad ‚candidate_skills.json‘)“ )

# Verwenden Sie die SELECT-Abfrage, um alle Datensätze aus den Candidate_data auszuwählen.

linuxhint_spark_app.sql( „SELECT * from Candidate_data“ ).zeigen()

Ausgang:

Die Gesamtzahl der Datensätze im PySpark DataFrame (aus JSON gelesen) beträgt 3.

Beispiel 2:

Filtern Sie nun die Datensätze im PySpark DataFrame basierend auf der Altersspalte. Verwenden Sie den „Größer als“-Operator für das Alter, um die Zeilen mit einem Alter zu erhalten, das größer als 22 ist.

# Verwenden Sie die SELECT-Abfrage, um Datensätze auszuwählen, deren Alter > 22 Jahre beträgt.

linuxhint_spark_app.sql( „SELECT * from Candidate_data where age>22“ ).zeigen()

Ausgang:

Es gibt nur einen Datensatz im PySpark DataFrame mit einem Alter von mehr als 22 Jahren.

Abschluss

Wir haben die drei verschiedenen Möglichkeiten kennengelernt, JSON in den PySpark DataFrame einzulesen. Zuerst haben wir gelernt, wie man die Methode read_json() verwendet, die im Pandas-Modul verfügbar ist, um JSON in PySpark DataFrame zu lesen. Als Nächstes haben wir gelernt, wie man die einzeiligen/mehrzeiligen JSON-Dateien mithilfe der Methode spark.read.json() mit option() liest. Um mehrere JSON-Dateien gleichzeitig zu lesen, müssen wir dieser Methode eine Liste mit Dateinamen übergeben. Mithilfe von PySpark SQL wird die JSON-Datei in die temporäre Ansicht eingelesen und der DataFrame mithilfe der SELECT-Abfrage angezeigt.