PySpark lasīt JSON()

Pyspark Lasit Json



Strādājot ar PySpark DataFrames, tas ir jāsaglabā PySpark DataFrame, ja vēlaties apstrādāt JSON datus. Pēc uzglabāšanas DataFrame mēs varam izmantot dažādas darbības un metodes datiem. Turklāt ir tik daudz priekšrocību, ja mēs konvertējam JSON uz PySpark DataFrame, jo tas ir vienkārši un mēs varam pārveidot/sadalīt datus vienkāršāk.

Satura tēma:

JSON nolasīšana PySpark DataFrame, izmantojot Pandas.read_json()







JSON nolasīšana uz PySpark DataFrame, izmantojot Spark.read.json()



JSON lasīšana PySpark DataFrame, izmantojot PySpark SQL



Šajā apmācībā mēs apskatīsim, kā nolasīt JSON PySpark DataFrame, izmantojot pandas.read_json(), spark.read.json() un spark.sql. Visos scenārijos mēs aplūkosim dažādus piemērus, ņemot vērā dažādus JSON formātus.





Pirms tālāk norādīto piemēru ieviešanas instalējiet PySpark bibliotēku.

pip instalēt pyspark

Pēc veiksmīgas instalēšanas rezultātu var redzēt šādi:



JSON nolasīšana PySpark DataFrame, izmantojot Pandas.read_json()

Programmā PySpark metode createDataFrame() tiek izmantota, lai tieši izveidotu DataFrame. Šeit mums vienkārši jānosūta JSON fails/ceļš uz JSON failu, izmantojot metodi pandas.read_json(). Šī metode read_json() izmanto faila nosaukumu/ceļu, kas ir pieejams Pandas modulī. Tāpēc ir nepieciešams importēt un izmantot Pandas moduli.

Sintakse:

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

Piemērs:

Izveidosim JSON failu ar nosaukumu “student_skill.json”, kurā ir 2 ieraksti. Šeit taustiņi/kolonnas ir “Students 1” un “Students 2”. Rindas ir vārds, vecums, prasme1 un prasme2.

importēt pyspark

importēt pandas

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Izmantojot pandas.read_json()

kandidāt_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

kandidāts_prasmes.show()

Izvade:

Mēs redzam, ka JSON dati tiek pārveidoti par PySpark DataFrame ar noteiktām kolonnām un rindām.

2. JSON nolasīšana uz PySpark DataFrame, izmantojot Spark.read.json()

Read.json() ir metode, kas ir līdzīga Read_json() Pandas. Šeit read.json() izmanto ceļu uz JSON vai tieši uz JSON failu un tieši ielādē to PySpark DataFrame. Šajā scenārijā metode createDataFrame() nav jāizmanto. Ja vēlaties lasīt vairākus JSON failus vienlaikus, mums ir jānosūta JSON failu nosaukumu saraksts, izmantojot sarakstu, kas ir atdalīts ar komatu. Visi JSON ieraksti tiek glabāti vienā DataFrame.

Sintakse:

Viens fails — spark_app.read.json( 'faila_nosaukums.json' )

Vairāki faili — spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

1. scenārijs: lasiet JSON, kurā ir viena rindiņa

Ja jūsu JSON fails ir ieraksta1, ieraksta2, ieraksta3… (vienas rindas) formātā, mēs to varam saukt par JSON ar atsevišķām rindiņām. Spark apstrādā šos ierakstus un saglabā tos PySpark DataFrame kā rindas. Katrs ieraksts ir rinda PySpark DataFrame.

Izveidosim JSON failu ar nosaukumu “candidate_skills.json”, kurā ir 3 ieraksti. Lasiet šo JSON PySpark DataFrame.

importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Izlasiet kandidāt_skills.json PySpark DataFrame

kandidāt_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

kandidāts_prasmes.show()

Izvade:

Mēs redzam, ka JSON dati tiek pārveidoti par PySpark DataFrame ar norādītajiem ierakstiem un kolonnu nosaukumiem.

2. scenārijs: lasiet JSON, kurā ir vairākas rindas

Ja JSON failā ir vairākas rindiņas, jums ir jāizmanto metode read.option().json(), lai nodotu vairākrindu parametru, kas jāiestata uz True. Tas ļauj mums PySpark DataFrame ielādēt JSON ar vairākām rindām.

read.option( 'daudzrindu' , 'patiess' .json( 'faila_nosaukums.json' )

Izveidosim JSON failu ar nosaukumu “multi.json”, kurā ir 3 ieraksti. Lasiet šo JSON PySpark DataFrame.

importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Lasiet multi.json (ar vairākām rindām) PySpark DataFrame

kandidāt_skills = linuxhint_spark_app.read.option( 'daudzrindu' , 'patiess' .json( 'multi.json' )

kandidāts_prasmes.show()

Izvade:

3. scenārijs: lasiet vairākus JSON

Mēs jau apspriedām šīs apmācības sākuma fāzē par vairākiem JSON failiem. Ja vēlaties lasīt vairākus JSON failus vienlaikus un saglabāt tos vienā PySpark DataFrame, mums ir jānosūta failu nosaukumu saraksts metodei read.json().

Izveidosim divus JSON failus ar nosaukumu “candidate_skills.json” un “candidate_skills2.json” un ielādēsim tos PySpark DataFrame.

Failā “candidate_skills.json” ir trīs ieraksti.

Failā “candidate_skill2.json” ir tikai viens ieraksts.

importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Vienlaicīgi lasiet PySpark DataFrame failus kandidāt_skills un kandidāt_skills2

kandidāt_skills = linuxhint_spark_app.read.json([ “candidate_skills.json” , 'candidate_skills2.json' ])

kandidāts_prasmes.show()

Izvade:

Visbeidzot, DataFrame ir četri ieraksti. Pirmie trīs ieraksti pieder pirmajam JSON un pēdējie ieraksti pieder otrajam JSON.

JSON nolasīšana uz PySpark DataFrame, izmantojot Spark.read.json()

Read.json() ir metode, kas ir līdzīga Read_json() Pandas. Šeit read.json() izmanto ceļu uz JSON vai tieši uz JSON failu un ielādē to tieši PySpark DataFrame. Šajā scenārijā metode createDataFrame() nav jāizmanto. Ja vēlaties lasīt vairākus JSON failus vienlaikus, mums ir jānosūta JSON failu nosaukumu saraksts, izmantojot sarakstu, kas ir atdalīts ar komatu. Visi JSON ieraksti tiek glabāti vienā DataFrame.

Sintakse:

Viens fails — spark_app.read.json( 'faila_nosaukums.json' )

Vairāki faili — spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

1. scenārijs: lasiet JSON, kurā ir viena rindiņa

Ja jūsu JSON fails ir ieraksts1, ieraksts2, ieraksts3… (vienas rindas) formātā, mēs to varam saukt par JSON ar vienu rindiņu. Spark apstrādā šos ierakstus un saglabā tos PySpark DataFrame kā rindas. Katrs ieraksts ir rinda PySpark DataFrame.

Izveidosim JSON failu ar nosaukumu “candidate_skills.json”, kurā ir 3 ieraksti. Lasiet šo JSON PySpark DataFrame.

importēt pyspark

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Izlasiet kandidāt_skills.json PySpark DataFrame

kandidāt_skills = linuxhint_spark_app.read.json( “candidate_skills.json” )

kandidāts_prasmes.show()

Izvade:

Mēs redzam, ka JSON dati tiek pārveidoti par PySpark DataFrame ar norādītajiem ierakstiem un kolonnu nosaukumiem.

JSON lasīšana PySpark DataFrame, izmantojot PySpark SQL

Var būt iespējams izveidot mūsu JSON datu pagaidu skatu, izmantojot PySpark SQL. Mēs varam tieši nodrošināt JSON pagaidu skata izveides laikā. Apskatiet tālāk norādīto sintaksi. Pēc tam mēs varam izmantot komandu SELECT, lai parādītu PySpark DataFrame.

Sintakse:

spark_app.sql( 'IZVEIDOT PAGAIDU SKATU SKATU VIEW_NAME, IZMANTOJOT JSON OPTIONS (ceļš faila_nosaukums.json)' )

Šeit “VIEW_NAME” ir JSON datu skats, un “file_name” ir JSON faila nosaukums.

1. piemērs:

Apsveriet JSON failu, kas tika izmantots iepriekšējos piemēros — “candidate_skills.json”. Atlasiet visas rindas no DataFrame, izmantojot SELECT ar operatoru “*”. Šeit * atlasa visas kolonnas no PySpark DataFrame.

importēt pyspark

importēt pandas

no pyspark.sql importēt SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Linux padoms' ).getOrCreate()

# Izmantojiet spark.sql, lai izveidotu VIEW no JSON

kandidāt_prasmes = linuxhint_spark_app.sql( 'IZVEIDOT PAGAIDU SKATU Candidate_data, IZMANTOJOT JSON OPTIONS (ceļš 'candidate_skills.json')' )

# Izmantojiet vaicājumu SELECT, lai atlasītu visus ierakstus no Kandidāta_datiem.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data' ).show()

Izvade:

Kopējais ierakstu skaits PySpark DataFrame (nolasīts no JSON) ir 3.

2. piemērs:

Tagad filtrējiet ierakstus PySpark DataFrame, pamatojoties uz vecuma kolonnu. Izmantojiet operatoru “lielāks par”, lai iegūtu rindas, kuru vecums ir lielāks par 22 gadiem.

# Izmantojiet vaicājumu SELECT, lai atlasītu ierakstus ar vecumu > 22.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data, kur vecums > 22' ).show()

Izvade:

PySpark DataFrame ir tikai viens ieraksts, kura vecums pārsniedz 22 gadus.

Secinājums

Mēs uzzinājām trīs dažādus veidus, kā nolasīt JSON PySpark DataFrame. Pirmkārt, mēs uzzinājām, kā izmantot Pandas modulī pieejamo metodi read_json(), lai nolasītu JSON uz PySpark DataFrame. Tālāk mēs uzzinājām, kā lasīt vienas/vairāku rindu JSON failus, izmantojot metodi spark.read.json() ar opciju (). Lai vienlaikus lasītu vairākus JSON failus, šai metodei ir jānodod failu nosaukumu saraksts. Izmantojot PySpark SQL, JSON fails tiek nolasīts pagaidu skatā un DataFrame tiek parādīts, izmantojot SELECT vaicājumu.