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 pysparkOnnistuneen 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 pysparktuonti 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ä.