PySpark Read JSON()

Pyspark Read Json



PySpark DataFrame -kehyksen kanssa työskennellessäsi se on tallennettava PySpark DataFrameen, jos haluat käsitellä JSON-tietoja. DataFrameen tallennuksen jälkeen voimme soveltaa dataan erilaisia ​​operaatioita ja menetelmiä. Lisäksi on niin monia etuja, jos muunnamme JSON:n PySpark DataFrameksi, koska se on yksinkertainen ja voimme muuntaa / osioida tiedot yksinkertaisemmalla tavalla.

Sisällön aihe:

JSON:n lukeminen PySpark DataFrameen käyttämällä Pandas.read_json()







JSONin lukeminen PySpark DataFrameen käyttämällä Spark.read.json()



JSON-tiedoston lukeminen PySpark DataFrameen PySpark SQL:n avulla



Tässä opetusohjelmassa tarkastellaan, kuinka JSON luetaan PySpark DataFrameen käyttämällä pandas.read_json(), spark.read.json() ja spark.sql. Kaikissa skenaarioissa tarkastelemme erilaisia ​​esimerkkejä ottamalla huomioon erilaisia ​​JSON-muotoja.





Asenna PySpark-kirjasto ennen seuraavien esimerkkien toteuttamista.

pip asennus pyspark

Onnistuneen asennuksen jälkeen voit nähdä tulosteen seuraavasti:



JSON:n lukeminen PySpark DataFrameen käyttämällä Pandas.read_json()

PySparkissa CreateDataFrame()-menetelmää käytetään DataFramen luomiseen suoraan. Tässä meidän on vain välitettävä JSON-tiedosto/polku JSON-tiedostoon pandas.read_json()-menetelmän kautta. Tämä read_json() -menetelmä ottaa tiedostonimen/polun, joka on saatavilla Pandas-moduulissa. Tästä syystä Pandas-moduuli on tuotava ja käytettävä.

Syntaksi:

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

Esimerkki:

Luodaan JSON-tiedosto nimeltä 'student_skill.json', joka sisältää 2 tietuetta. Tässä näppäimet/sarakkeet ovat 'Opiskelija 1' ja 'Opiskelija 2'. Rivit ovat nimi, ikä, taito1 ja taito2.

tuonti pyspark

tuonti pandat

pyspark.sql-tiedostosta tuo SparkSession

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

# Pandas.read_json()

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

ehdokas_taidot.show()

Lähtö:

Näemme, että JSON-tiedot muunnetaan PySpark DataFrameksi määritetyillä sarakkeilla ja riveillä.

2. JSONin lukeminen PySpark DataFrameen käyttämällä Spark.read.json()

Read.json() on menetelmä, joka on samanlainen kuin Read_json() Pandasissa. Tässä read.json() vie polun JSON-tiedostoon tai suoraan JSON-tiedostoon ja lataa sen suoraan PySpark DataFrameen. Tässä skenaariossa ei tarvitse käyttää createDataFrame()-menetelmää. Jos haluat lukea useita JSON-tiedostoja kerralla, meidän on välitettävä JSON-tiedostojen nimien luettelo pilkuilla erotetun luettelon kautta. Kaikki JSON-tietueet on tallennettu yhteen DataFrame-kehykseen.

Syntaksi:

Yksi tiedosto - spark_app.read.json( 'tiedoston_nimi.json' )

Useita tiedostoja - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Skenaario 1: Lue JSON, jossa on yksi rivi

Jos JSON-tiedostosi on tietue1-, tietue2-, tietue3… (yksirivinen) -muodossa, voimme kutsua sitä yksiriviseksi JSONiksi. Spark käsittelee nämä tietueet ja tallentaa ne PySpark DataFrameen riveinä. Jokainen tietue on rivi PySpark DataFrame -kehyksessä.

Luodaan JSON-tiedosto nimeltä 'candidate_skills.json', joka sisältää 3 tietuetta. Lue tämä JSON PySpark DataFrameen.

tuonti pyspark

pyspark.sql-tiedostosta tuo SparkSession

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

# Luekandidaatti_skills.json PySpark DataFrameen

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

ehdokas_taidot.show()

Lähtö:

Näemme, että JSON-tiedot muunnetaan PySpark DataFrameksi määritetyillä tietueilla ja sarakkeiden nimillä.

Skenaario 2: Lue JSON, jossa on useita rivejä

Jos JSON-tiedostossasi on useita rivejä, sinun on käytettävä read.option().json()-menetelmää monirivisen parametrin välittämiseen, jonka arvoksi on asetettava tosi. Tämän avulla voimme ladata useita rivejä sisältävän JSONin PySpark DataFrameen.

read.option( 'monirivinen' , 'totta' ).json( 'tiedoston_nimi.json' )

Luodaan JSON-tiedosto nimeltä 'multi.json', joka sisältää 3 tietuetta. Lue tämä JSON PySpark DataFrameen.

tuonti pyspark

pyspark.sql-tiedostosta tuo SparkSession

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

# Lue multi.json (jossa on useita rivejä) PySpark DataFrameen

ehdokas_skills = linuxhint_spark_app.read.option( 'monirivinen' , 'totta' ).json( 'multi.json' )

ehdokas_taidot.show()

Lähtö:

Skenaario 3: Lue useita JSON-tiedostoja

Keskustelimme jo tämän opetusohjelman alkuvaiheessa useista JSON-tiedostoista. Jos haluat lukea useita JSON-tiedostoja kerralla ja tallentaa ne yhteen PySpark DataFrameen, meidän on välitettävä tiedostonimien luettelo read.json()-metodille.

Luodaan kaksi JSON-tiedostoa nimeltä 'candidate_skills.json' ja 'candidate_skills2.json' ja ladataan ne PySpark DataFrameen.

Candidate_skills.json-tiedosto sisältää kolme tietuetta.

Candidate_skill2.json-tiedosto sisältää vain yhden tietueen.

tuonti pyspark

pyspark.sql-tiedostosta tuo SparkSession

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

# Lue ehdokas_taidot ja ehdokas_skills2 tiedostot kerrallaan PySpark DataFrameen

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

ehdokas_taidot.show()

Lähtö:

Lopuksi DataFrame sisältää neljä tietuetta. Ensimmäiset kolme tietuetta kuuluvat ensimmäiseen JSONiin ja viimeiset tietueet kuuluvat toiseen JSONiin.

JSONin lukeminen PySpark DataFrameen käyttämällä Spark.read.json()

Read.json() on menetelmä, joka on samanlainen kuin Read_json() Pandasissa. Tässä read.json() vie polun JSON-tiedostoon tai suoraan JSON-tiedostoon ja lataa sen suoraan PySpark DataFrame -kehykseen. Tässä skenaariossa ei tarvitse käyttää createDataFrame()-menetelmää. Jos haluat lukea useita JSON-tiedostoja kerralla, meidän on välitettävä JSON-tiedostojen nimien luettelo pilkuilla erotetun luettelon kautta. Kaikki JSON-tietueet on tallennettu yhteen DataFrame-kehykseen.

Syntaksi:

Yksi tiedosto - spark_app.read.json( 'tiedoston_nimi.json' )

Useita tiedostoja - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Skenaario 1: Lue JSON, jossa on yksi rivi

Jos JSON-tiedostosi on tietue1-, tietue2-, tietue3…-muodossa (yksirivinen), voimme kutsua sitä yksiriviseksi JSONiksi. Spark käsittelee nämä tietueet ja tallentaa ne PySpark DataFrameen riveinä. Jokainen tietue on rivi PySpark DataFrame -kehyksessä.

Luodaan JSON-tiedosto nimeltä 'candidate_skills.json', joka sisältää 3 tietuetta. Lue tämä JSON PySpark DataFrameen.

tuonti pyspark

pyspark.sql-tiedostosta tuo SparkSession

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

# Luekandidaatti_skills.json PySpark DataFrameen

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

ehdokas_taidot.show()

Lähtö:

Näemme, että JSON-tiedot muunnetaan PySpark DataFrameksi määritetyillä tietueilla ja sarakkeiden nimillä.

JSON-tiedoston lukeminen PySpark DataFrameen PySpark SQL:n avulla

PySpark SQL:n avulla voi olla mahdollista luoda väliaikainen näkymä JSON-tiedoistamme. Voimme tarjota JSON-koodin suoraan tilapäisen näkymän luomisen yhteydessä. Katso seuraavaa syntaksia. Sen jälkeen voimme käyttää SELECT-komentoa PySpark DataFramen näyttämiseen.

Syntaksi:

spark_app.sql( 'LUO VÄLIAIKAINEN NÄKYMÄNÄKYMÄ NÄKYMÄ_NAME json-VAIHTOEHTOJA KÄYTTÄMÄLLÄ (polku tiedoston_nimi.json)' )

Tässä 'VIEW_NAME' on JSON-tietojen näkymä ja 'file_name' on JSON-tiedoston nimi.

Esimerkki 1:

Harkitse aiemmissa esimerkeissä käytettyä JSON-tiedostoa – 'candidate_skills.json'. Valitse kaikki rivit DataFramesta käyttämällä SELECT-näppäintä, jossa on “*”-operaattori. Tässä * valitsee kaikki sarakkeet PySpark DataFramesta.

tuonti pyspark

tuonti pandat

pyspark.sql-tiedostosta tuo SparkSession

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

# Spark.sql:n avulla luodaan VIEW JSON-tiedostosta

ehdokas_skills = linuxhint_spark_app.sql( 'LUO VÄLIAIKAINEN NÄKYMÄ Candidate_data USING json OPTIONS (polku 'candidate_skills.json')' )

# Käytä SELECT-kyselyä valitaksesi kaikki tietueet ehdokastiedoista.

linuxhint_spark_app.sql( 'VALITSE * ehdokastiedoista' ).näytä()

Lähtö:

PySpark DataFramen tietueiden kokonaismäärä (luettu JSON:sta) on 3.

Esimerkki 2:

Suodata nyt PySpark DataFramen tietueet ikäsarakkeen perusteella. Käytä iän 'suurempi kuin'-operaattoria saadaksesi rivit, joiden ikä on suurempi kuin 22.

# Käytä SELECT-kyselyä valitaksesi tietueet, joiden ikä on > 22.

linuxhint_spark_app.sql( 'VALITSE * ehdokastiedoista, jossa ikä > 22' ).näytä()

Lähtö:

PySpark DataFrame -kehyksessä on vain yksi tietue, jonka ikä on yli 22 vuotta.

Johtopäätös

Opimme kolme eri tapaa lukea JSON PySpark DataFrameen. Ensin opimme käyttämään Pandas-moduulissa saatavilla olevaa read_json()-menetelmää JSONin lukemiseen PySpark DataFrameen. Seuraavaksi opimme lukemaan yksi- tai monirivisiä JSON-tiedostoja käyttämällä spark.read.json()-metodia option() kanssa. Jotta voimme lukea useita JSON-tiedostoja kerralla, meidän on välitettävä tiedostonimiluettelo tälle menetelmälle. PySpark SQL:n avulla JSON-tiedosto luetaan väliaikaiseen näkymään ja DataFrame näytetään SELECT-kyselyllä.