PySpark Læs JSON()

Pyspark Laes Json



Mens du arbejder med PySpark DataFrames, skal det gemmes i PySpark DataFrame, hvis du vil behandle JSON-dataene. Efter lagring i DataFrame kan vi anvende de forskellige operationer og metoder på dataene. Der er også så mange fordele, hvis vi konverterer JSON til PySpark DataFrame, da det er enkelt, og vi kan transformere/partitionere dataene på en enklere måde.

Emne for indhold:

Læsning af JSON i PySpark DataFrame ved hjælp af Pandas.read_json()







Læsning af JSON til PySpark DataFrame ved hjælp af Spark.read.json()



Læser JSON til PySpark DataFrame ved hjælp af PySpark SQL



I denne tutorial vil vi se på, hvordan man læser JSON ind i PySpark DataFrame ved hjælp af pandas.read_json(), spark.read.json() og spark.sql. I alle scenarierne vil vi se på de forskellige eksempler ved at overveje de forskellige JSON-formater.





Installer PySpark-biblioteket, før du implementerer følgende eksempler.

pip installer pyspark

Efter den vellykkede installation kan du se output som følger:



Læsning af JSON i PySpark DataFrame ved hjælp af Pandas.read_json()

I PySpark bruges createDataFrame() metoden til at oprette DataFrame direkte. Her skal vi blot sende JSON-filen/stien til JSON-filen gennem pandas.read_json()-metoden. Denne read_json()-metode tager filnavnet/stien, som er tilgængelig i Pandas-modulet. Det er derfor, det er nødvendigt at importere og bruge Pandas-modulet.

Syntaks:

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

Eksempel:

Lad os oprette en JSON-fil med navnet 'student_skill.json', der har 2 poster. Her er tasterne/kolonnerne 'Elev 1' og 'Elev 2'. Rækkerne er navn, alder, færdighed1 og færdighed2.

importere pyspark

importere pandaer

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Brug af pandas.read_json()

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

candidate_skills.show()

Produktion:

Vi kan se, at JSON-dataene konverteres til PySpark DataFrame med specificerede kolonner og rækker.

2. Læsning af JSON til PySpark DataFrame ved hjælp af Spark.read.json()

Read.json() er en metode, der ligner read_json() i Pandas. Her tager read.json() en sti til JSON eller direkte til JSON-filen og indlæser den direkte i PySpark DataFrame. Det er ikke nødvendigt at bruge metoden createDataFrame() i dette scenarie. Hvis du vil læse flere JSON-filer ad gangen, skal vi sende en liste over JSON-filnavne gennem en liste, der er adskilt med komma. Alle JSON-posterne er gemt i en enkelt DataFrame.

Syntaks:

Enkelt fil - spark_app.read.json( 'filnavn.json' )

Flere filer - spark_app.read.json([ 'fil1.json' , 'fil2.json' ,...])

Scenario 1: Læs JSON Having Single Line

Hvis din JSON-fil er i formaterne record1, record2, record3… (enkelt linje), kan vi kalde den som JSON med enkelte linjer. Spark behandler disse poster og gemmer dem i PySpark DataFrame som rækker. Hver post er en række i PySpark DataFrame.

Lad os oprette en JSON-fil ved navn 'candidate_skills.json', der har 3 poster. Læs denne JSON ind i PySpark DataFrame.

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Læs candidate_skills.json ind i PySpark DataFrame

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

candidate_skills.show()

Produktion:

Vi kan se, at JSON-dataene konverteres til PySpark DataFrame med specificerede poster og kolonnenavne.

Scenario 2: Læs JSON med flere linjer

Hvis din JSON-fil har flere linjer, skal du bruge read.option().json()-metoden for at videregive multiline-parameteren, som skal indstilles til sand. Dette giver os mulighed for at indlæse JSON med flere linjer i PySpark DataFrame.

læs.option( 'flerlinjet' , 'rigtigt' ).json( 'filnavn.json' )

Lad os oprette en JSON-fil med navnet 'multi.json', der har 3 poster. Læs denne JSON ind i PySpark DataFrame.

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Læs multi.json (der har flere linjer) i PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.option( 'flerlinjet' , 'rigtigt' ).json( 'multi.json' )

candidate_skills.show()

Produktion:

Scenarie 3: Læs flere JSON

Vi diskuterede allerede i startfasen af ​​denne tutorial om flere JSON-filer. Hvis du vil læse flere JSON-filer ad gangen og gemme dem i en enkelt PySpark DataFrame, skal vi sende en liste over filnavne til read.json()-metoden.

Lad os oprette to JSON-filer med navnet 'candidate_skills.json' og 'candidate_skills2.json' og indlæse dem i PySpark DataFrame.

Filen 'candidate_skills.json' har tre poster.

Filen 'candidate_skill2.json' indeholder kun en enkelt post.

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Læs candidate_skills og candidate_skills2 filer ad gangen i PySpark DataFrame

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

candidate_skills.show()

Produktion:

Endelig har DataFrame fire poster. De første tre poster tilhører den første JSON, og de sidste poster tilhører den anden JSON.

Læsning af JSON til PySpark DataFrame ved hjælp af Spark.read.json()

Read.json() er en metode, der ligner read_json() i Pandas. Her tager read.json() en sti til JSON eller direkte til JSON-filen og indlæser den direkte i PySpark DataFrame. Det er ikke nødvendigt at bruge metoden createDataFrame() i dette scenarie. Hvis du vil læse flere JSON-filer ad gangen, skal vi sende en liste over JSON-filnavne gennem en liste, der er adskilt med komma. Alle JSON-posterne er gemt i en enkelt DataFrame.

Syntaks:

Enkelt fil - spark_app.read.json( 'filnavn.json' )

Flere filer - spark_app.read.json([ 'fil1.json' , 'fil2.json' ,...])

Scenario 1: Læs JSON Having Single Line

Hvis din JSON-fil er i formatet record1, record2, record3... (enkelt linje), kan vi kalde den som JSON med enkelte linjer. Spark behandler disse poster og gemmer dem i PySpark DataFrame som rækker. Hver post er en række i PySpark DataFrame.

Lad os oprette en JSON-fil ved navn 'candidate_skills.json', der har 3 poster. Læs denne JSON ind i PySpark DataFrame.

importere pyspark

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Læs candidate_skills.json ind i PySpark DataFrame

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

candidate_skills.show()

Produktion:

Vi kan se, at JSON-dataene konverteres til PySpark DataFrame med specificerede poster og kolonnenavne.

Læser JSON til PySpark DataFrame ved hjælp af PySpark SQL

Det kan være muligt at oprette en midlertidig visning af vores JSON-data ved hjælp af PySpark SQL. Direkte kan vi levere JSON på tidspunktet for oprettelse af den midlertidige visning. Se på følgende syntaks. Derefter kan vi bruge SELECT-kommandoen til at vise PySpark DataFrame.

Syntaks:

spark_app.sql( 'OPRET MIDLERTIDIG VISNING VIEW_NAME VED HJÆLP AF json OPTIONS (sti 'file_name.json')' )

Her er 'VIEW_NAME' visningen af ​​JSON-data, og 'file_name' er navnet på JSON-filen.

Eksempel 1:

Overvej JSON-filen, der er brugt i de foregående eksempler - 'candidate_skills.json'. Vælg alle rækkerne fra DataFrame ved hjælp af SELECT med '*' operatoren. Her vælger * alle kolonnerne fra PySpark DataFrame.

importere pyspark

importere pandaer

fra pyspark.sql importer SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux-tip' ).getOrCreate()

# Brug af spark.sql til at oprette VIEW fra JSON

candidate_skills = linuxhint_spark_app.sql( 'OPRET MIDLERTIDIG VISNING Candidate_data VED HJÆLP AF json OPTIONS (sti 'candidate_skills.json')' )

# Brug SELECT-forespørgsel til at vælge alle poster fra Candidate_data.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data' ).at vise()

Produktion:

Det samlede antal poster i PySpark DataFrame (læst fra JSON) er 3.

Eksempel 2:

Filtrer nu posterne i PySpark DataFrame baseret på alderskolonnen. Brug operatoren 'større end' på alderen for at få rækkerne med en alder, der er større end 22.

# Brug SELECT-forespørgsel til at vælge poster med alder > 22.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data where age>22' ).at vise()

Produktion:

Der er kun én post i PySpark DataFrame med en alder, der er større end 22.

Konklusion

Vi lærte de tre forskellige måder at læse JSON ind i PySpark DataFrame. Først lærte vi, hvordan man bruger read_json()-metoden, der er tilgængelig i Pandas-modulet, til at læse JSON til PySpark DataFrame. Dernæst lærte vi, hvordan man læser single/multi line JSON-filer ved hjælp af spark.read.json()-metoden med option(). For at læse flere JSON-filer ad gangen, skal vi sende en liste over filnavne til denne metode. Ved hjælp af PySpark SQL læses JSON-filen ind i den midlertidige visning, og DataFrame vises ved hjælp af SELECT-forespørgslen.