PySpark Branje JSON()

Pyspark Branje Json



Med delom s PySpark DataFrame mora biti shranjen v PySpark DataFrame, če želite obdelati podatke JSON. Po shranjevanju v DataFrame lahko uporabimo različne operacije in metode na podatkih. Poleg tega obstaja toliko prednosti, če pretvorimo JSON v PySpark DataFrame, saj je preprost in lahko podatke transformiramo/razdelimo na enostavnejši način.

Tema vsebine:

Branje JSON v PySpark DataFrame z uporabo Pandas.read_json()







Branje JSON v PySpark DataFrame z uporabo Spark.read.json()



Branje JSON v PySpark DataFrame z uporabo PySpark SQL



V tej vadnici si bomo ogledali, kako prebrati JSON v PySpark DataFrame z uporabo pandas.read_json(), spark.read.json() in spark.sql. V vseh scenarijih si bomo ogledali različne primere z upoštevanjem različnih formatov JSON.





Pred implementacijo naslednjih primerov namestite knjižnico PySpark.

pip namestite pyspark

Po uspešni namestitvi si lahko ogledate izhod, kot sledi:



Branje JSON v PySpark DataFrame z uporabo Pandas.read_json()

V PySparku se metoda createDataFrame() uporablja za neposredno ustvarjanje DataFrame. Tukaj moramo samo posredovati datoteko JSON/pot do datoteke JSON prek metode pandas.read_json(). Ta metoda read_json() prevzame ime datoteke/pot, ki je na voljo v modulu Pandas. Zato je potrebno uvoziti in uporabiti modul Pandas.

Sintaksa:

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

primer:

Ustvarimo datoteko JSON z imenom 'student_skill.json', ki vsebuje 2 zapisa. Tukaj sta ključa/stolpca »Študent 1« in »Študent 2«. Vrstice so ime, starost, spretnost1 in spretnost2.

uvozi pyspark

uvoz pand

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Uporaba pandas.read_json()

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

kandidat_skills.show()

Izhod:

Vidimo lahko, da so podatki JSON pretvorjeni v PySpark DataFrame z določenimi stolpci in vrsticami.

2. Branje JSON v PySpark DataFrame z uporabo Spark.read.json()

Read.json() je metoda, ki je podobna read_json() v Pandas. Tukaj read.json() prevzame pot do JSON ali neposredno do datoteke JSON in jo neposredno naloži v PySpark DataFrame. V tem scenariju ni treba uporabiti metode createDataFrame(). Če želite brati več datotek JSON hkrati, moramo posredovati seznam imen datotek JSON skozi seznam, ki je ločen z vejico. Vsi zapisi JSON so shranjeni v enem DataFrame.

Sintaksa:

Ena datoteka - spark_app.read.json( 'ime_datoteke.json' )

Več datotek - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

1. scenarij: branje JSON z eno vrstico

Če je vaša datoteka JSON v oblikah zapis1, zapis2, zapis3… (ena vrstica), jo lahko imenujemo kot JSON z eno vrstico. Spark obdela te zapise in jih shrani v PySpark DataFrame kot vrstice. Vsak zapis je vrstica v PySpark DataFrame.

Ustvarimo datoteko JSON z imenom 'candidate_skills.json', ki vsebuje 3 zapise. Preberite ta JSON v PySpark DataFrame.

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Preberite kandidat_skills.json v PySpark DataFrame

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

kandidat_skills.show()

Izhod:

Vidimo lahko, da so podatki JSON pretvorjeni v PySpark DataFrame z določenimi zapisi in imeni stolpcev.

2. scenarij: preberite JSON z več vrsticami

Če ima vaša datoteka JSON več vrstic, morate uporabiti metodo read.option().json(), da posredujete večvrstični parameter, ki mora biti nastavljen na true. To nam omogoča nalaganje JSON z več vrsticami v PySpark DataFrame.

read.option( 'večvrstični' , 'prav' ).json( 'ime_datoteke.json' )

Ustvarimo datoteko JSON z imenom »multi.json«, ki vsebuje 3 zapise. Preberite ta JSON v PySpark DataFrame.

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Preberite multi.json (ki ima več vrstic) v PySpark DataFrame

kandidat_skills = linuxhint_spark_app.read.option( 'večvrstični' , 'prav' ).json( 'multi.json' )

kandidat_skills.show()

Izhod:

3. scenarij: branje več datotek JSON

V začetni fazi te vadnice smo že razpravljali o več datotekah JSON. Če želite prebrati več datotek JSON hkrati in jih shraniti v en PySpark DataFrame, moramo posredovati seznam imen datotek metodi read.json().

Ustvarimo dve datoteki JSON z imenom 'candidate_skills.json' in 'candidate_skills2.json' in ju naložimo v PySpark DataFrame.

Datoteka »candidate_skills.json« vsebuje tri zapise.

Datoteka »candidate_skill2.json« vsebuje samo en zapis.

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Branje datotek kandidat_skills in kandidat_skills2 naenkrat v PySpark DataFrame

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

kandidat_skills.show()

Izhod:

Nazadnje DataFrame vsebuje štiri zapise. Prvi trije zapisi pripadajo prvemu JSON, zadnji zapisi pa drugemu JSON.

Branje JSON v PySpark DataFrame z uporabo Spark.read.json()

Read.json() je metoda, ki je podobna read_json() v Pandas. Tukaj read.json() prevzame pot do JSON ali neposredno do datoteke JSON in jo naloži neposredno v PySpark DataFrame. V tem scenariju ni treba uporabiti metode createDataFrame(). Če želite brati več datotek JSON hkrati, moramo posredovati seznam imen datotek JSON skozi seznam, ki je ločen z vejico. Vsi zapisi JSON so shranjeni v enem DataFrame.

Sintaksa:

Ena datoteka - spark_app.read.json( 'ime_datoteke.json' )

Več datotek - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

1. scenarij: branje JSON z eno vrstico

Če je vaša datoteka JSON v zapisu1, zapis2, zapis3… (ena vrstica), jo lahko imenujemo kot JSON z eno vrstico. Spark obdela te zapise in jih shrani v PySpark DataFrame kot vrstice. Vsak zapis je vrstica v PySpark DataFrame.

Ustvarimo datoteko JSON z imenom 'candidate_skills.json', ki vsebuje 3 zapise. Preberite ta JSON v PySpark DataFrame.

uvozi pyspark

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Preberite kandidat_skills.json v PySpark DataFrame

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

kandidat_skills.show()

Izhod:

Vidimo lahko, da so podatki JSON pretvorjeni v PySpark DataFrame z določenimi zapisi in imeni stolpcev.

Branje JSON v PySpark DataFrame z uporabo PySpark SQL

Z uporabo PySpark SQL je mogoče ustvariti začasni pogled naših podatkov JSON. Neposredno lahko zagotovimo JSON v času ustvarjanja začasnega pogleda. Poglejte naslednjo sintakso. Po tem lahko uporabimo ukaz SELECT za prikaz PySpark DataFrame.

Sintaksa:

spark_app.sql( 'USTVARI ZAČASNI POGLED VIEW_NAME Z UPORABO json OPTIONS (pot 'ime_datoteke.json')' )

Tu je »VIEW_NAME« pogled podatkov JSON, »file_name« pa je ime datoteke JSON.

Primer 1:

Razmislite o datoteki JSON, ki je bila uporabljena v prejšnjih primerih – »candidate_skills.json«. Izberite vse vrstice iz DataFrame z uporabo SELECT z operatorjem “*”. Tukaj * izbere vse stolpce iz PySpark DataFrame.

uvozi pyspark

uvoz pand

iz pyspark.sql uvozi SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Namig za Linux' ).getOrCreate()

# Uporaba spark.sql za ustvarjanje VIEW iz JSON

kandidat_skills = linuxhint_spark_app.sql( 'USTVARITE ZAČASNI POGLED Candidate_data Z UPORABO json OPTIONS (pot 'candidate_skills.json')' )

# Uporabite poizvedbo SELECT, da izberete vse zapise iz Candidate_data.

linuxhint_spark_app.sql( 'IZBERI * iz podatkov_kandidata' ).show()

Izhod:

Skupno število zapisov v PySpark DataFrame (prebranih iz JSON) je 3.

Primer 2:

Zdaj filtrirajte zapise v PySpark DataFrame na podlagi stolpca starosti. Uporabite operator »več kot« za starost, da dobite vrstice s starostjo, ki je višja od 22 let.

# Uporabite poizvedbo SELECT, da izberete zapise s starostjo > 22.

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

Izhod:

V PySpark DataFrame je samo en zapis s starostjo nad 22 let.

Zaključek

Naučili smo se treh različnih načinov branja JSON v PySpark DataFrame. Najprej smo se naučili, kako uporabiti metodo read_json(), ki je na voljo v modulu Pandas za branje JSON v PySpark DataFrame. Nato smo se naučili brati eno-/večvrstične datoteke JSON z uporabo metode spark.read.json() z option(). Če želite prebrati več datotek JSON hkrati, moramo tej metodi posredovati seznam imen datotek. Z uporabo PySpark SQL se datoteka JSON prebere v začasni pogled in DataFrame se prikaže s poizvedbo SELECT.