PySpark čita JSON()

Pyspark Cita Json



Dok radite s PySpark DataFrame, potrebno ga je pohraniti u PySpark DataFrame ako želite obraditi JSON podatke. Nakon pohranjivanja u DataFrame, možemo primijeniti različite operacije i metode na podatke. Također, postoji toliko mnogo prednosti ako pretvorimo JSON u PySpark DataFrame jer je jednostavan i možemo transformirati/particionirati podatke na jednostavniji način.

Tema sadržaja:

Čitanje JSON-a u PySpark DataFrame pomoću Pandas.read_json()







Čitanje JSON-a u PySpark DataFrame pomoću Spark.read.json()



Čitanje JSON-a u PySpark DataFrame pomoću PySpark SQL-a



U ovom vodiču ćemo pogledati kako čitati JSON u PySpark DataFrame pomoću pandas.read_json(), spark.read.json() i spark.sql. U svim scenarijima, pogledat ćemo različite primjere uzimajući u obzir različite JSON formate.





Instalirajte biblioteku PySpark prije implementacije sljedećih primjera.

pip instaliraj pyspark

Nakon uspješne instalacije, možete vidjeti izlaz kako slijedi:



Čitanje JSON-a u PySpark DataFrame pomoću Pandas.read_json()

U PySparku se metoda createDataFrame() koristi za izravno stvaranje DataFramea. Ovdje samo trebamo proslijediti JSON datoteku/put do JSON datoteke kroz metodu pandas.read_json(). Ova metoda read_json() uzima naziv/put datoteke koji je dostupan u Pandas modulu. Zbog toga je potrebno uvesti i koristiti Pandas modul.

Sintaksa:

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

Primjer:

Kreirajmo JSON datoteku pod nazivom 'student_skill.json' koja sadrži 2 zapisa. Ovdje su ključevi/stupci “Student 1” i “Student 2”. Redovi su ime, dob, vještina1 i vještina2.

uvoz pyspark

uvoz pande

iz pyspark.sql uvesti SparkSession

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

# Korištenje pandas.read_json()

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

kandidat_vještine.show()

Izlaz:

Vidimo da su JSON podaci pretvoreni u PySpark DataFrame s navedenim stupcima i redcima.

2. Čitanje JSON-a u PySpark DataFrame pomoću Spark.read.json()

Read.json() je metoda koja je slična read_json() u Pandas. Ovdje read.json() vodi put do JSON ili izravno do JSON datoteke i izravno je učitava u PySpark DataFrame. U ovom scenariju nema potrebe koristiti metodu createDataFrame(). Ako želite čitati više JSON datoteka odjednom, moramo proslijediti popis naziva JSON datoteka kroz popis koji je odvojen zarezom. Svi JSON zapisi pohranjeni su u jedan DataFrame.

Sintaksa:

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

Više datoteka - spark_app.read.json([ 'datoteka1.json' , 'file2.json' ,...])

Scenarij 1: Čitajte JSON s jednim retkom

Ako je vaša JSON datoteka u formatima record1, record2, record3… (jedan redak), možemo je nazvati JSON s jednim redom. Spark obrađuje te zapise i pohranjuje ih u PySpark DataFrame kao retke. Svaki zapis je red u PySpark DataFrame.

Kreirajmo JSON datoteku pod nazivom 'candidate_skills.json' koja sadrži 3 zapisa. Pročitajte ovaj JSON u PySpark DataFrame.

uvoz pyspark

iz pyspark.sql uvesti SparkSession

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

# Pročitajte kandidat_skills.json u PySpark DataFrame

vještine_kandidata = linuxhint_spark_app.read.json( 'candidate_skills.json' )

kandidat_vještine.show()

Izlaz:

Vidimo da su JSON podaci pretvoreni u PySpark DataFrame s navedenim zapisima i nazivima stupaca.

Scenarij 2: Čitajte JSON s više redaka

Ako vaša JSON datoteka ima više redaka, trebate upotrijebiti metodu read.option().json() za prosljeđivanje višelinijskog parametra koji mora biti postavljen na true. To nam omogućuje učitavanje JSON-a s više redaka u PySpark DataFrame.

read.option( 'više linija' , 'pravi' ).json( 'ime_datoteke.json' )

Kreirajmo JSON datoteku pod nazivom 'multi.json' koja sadrži 3 zapisa. Pročitajte ovaj JSON u PySpark DataFrame.

uvoz pyspark

iz pyspark.sql uvesti SparkSession

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

# Pročitajte multi.json (koji ima više redaka) u PySpark DataFrame

vještina_kandidata = linuxhint_spark_app.read.option( 'više linija' , 'pravi' ).json( 'multi.json' )

kandidat_vještine.show()

Izlaz:

Scenarij 3: Pročitajte više JSON-a

Već smo razgovarali u početnoj fazi ovog vodiča o više JSON datoteka. Ako želite čitati više JSON datoteka odjednom i pohraniti ih u jedan PySpark DataFrame, moramo proslijediti popis naziva datoteka metodi read.json().

Kreirajmo dvije JSON datoteke pod nazivom 'candidate_skills.json' i 'candidate_skills2.json' i učitajmo ih u PySpark DataFrame.

Datoteka 'candidate_skills.json' sadrži tri zapisa.

Datoteka 'candidate_skill2.json' sadrži samo jedan zapis.

uvoz pyspark

iz pyspark.sql uvesti SparkSession

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

# Čitajte datoteke kandidat_skills i kandidat_skills2 odjednom u PySpark DataFrame

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

kandidat_vještine.show()

Izlaz:

Konačno, DataFrame sadrži četiri zapisa. Prva tri zapisa pripadaju prvom JSON-u, a posljednji zapisi pripadaju drugom JSON-u.

Čitanje JSON-a u PySpark DataFrame pomoću Spark.read.json()

Read.json() je metoda koja je slična read_json() u Pandas. Ovdje read.json() uzima put do JSON ili izravno do JSON datoteke i učitava je izravno u PySpark DataFrame. U ovom scenariju nema potrebe koristiti metodu createDataFrame(). Ako želite čitati više JSON datoteka odjednom, moramo proslijediti popis naziva JSON datoteka kroz popis koji je odvojen zarezom. Svi JSON zapisi pohranjeni su u jedan DataFrame.

Sintaksa:

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

Više datoteka - spark_app.read.json([ 'datoteka1.json' , 'file2.json' ,...])

Scenarij 1: Čitajte JSON s jednim retkom

Ako je vaša JSON datoteka u formatu record1, record2, record3… (jedan redak), možemo je nazvati JSON s jednim redom. Spark obrađuje te zapise i pohranjuje ih u PySpark DataFrame kao retke. Svaki zapis je red u PySpark DataFrame.

Kreirajmo JSON datoteku pod nazivom 'candidate_skills.json' koja sadrži 3 zapisa. Pročitajte ovaj JSON u PySpark DataFrame.

uvoz pyspark

iz pyspark.sql uvesti SparkSession

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

# Pročitajte kandidat_skills.json u PySpark DataFrame

vještine_kandidata = linuxhint_spark_app.read.json( 'candidate_skills.json' )

kandidat_vještine.show()

Izlaz:

Vidimo da su JSON podaci pretvoreni u PySpark DataFrame s navedenim zapisima i nazivima stupaca.

Čitanje JSON-a u PySpark DataFrame pomoću PySpark SQL-a

Moguće je stvoriti privremeni prikaz naših JSON podataka pomoću PySpark SQL-a. Izravno možemo pružiti JSON u trenutku stvaranja privremenog prikaza. Pogledajte sljedeću sintaksu. Nakon toga, možemo koristiti naredbu SELECT za prikaz PySpark DataFrame.

Sintaksa:

spark_app.sql( 'KREIRAJ PRIVREMENI PRIKAZ VIEW_NAME POMOĆU json OPCIJA (staza 'file_name.json')' )

Ovdje je 'VIEW_NAME' prikaz JSON podataka, a 'file_name' je naziv JSON datoteke.

Primjer 1:

Razmotrite JSON datoteku koja se koristi u prethodnim primjerima – “candidate_skills.json”. Odaberite sve retke iz DataFramea koristeći SELECT s operatorom “*”. Ovdje * odabire sve stupce iz PySpark DataFramea.

uvoz pyspark

uvoz pande

iz pyspark.sql uvesti SparkSession

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

# Korištenje spark.sql za stvaranje VIEW-a iz JSON-a

kandidat_vještine = linuxhint_spark_app.sql( 'KREIRAJTE PRIVREMENI PRIKAZ Candidate_data POMOĆU json OPCIJA (staza 'candidate_skills.json')' )

# Upotrijebite SELECT upit za odabir svih zapisa iz Candidate_data.

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

Izlaz:

Ukupan broj zapisa u PySpark DataFrame (očitano iz JSON-a) je 3.

Primjer 2:

Sada filtrirajte zapise u PySpark DataFrameu na temelju stupca dobi. Upotrijebite operator 'veće od' za dob kako biste dobili retke s dobi većom od 22 godine.

# Upotrijebite SELECT upit za odabir zapisa s godinama > 22.

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

Izlaz:

Postoji samo jedan zapis u PySpark DataFrameu s dobi većom od 22 godine.

Zaključak

Naučili smo tri različita načina čitanja JSON-a u PySpark DataFrame. Prvo smo naučili kako koristiti metodu read_json() koja je dostupna u Pandas modulu za čitanje JSON-a u PySpark DataFrame. Zatim smo naučili kako čitati JSON datoteke s jednim/više reda pomoću metode spark.read.json() s option(). Za čitanje više JSON datoteka odjednom, ovoj metodi moramo proslijediti popis naziva datoteka. Koristeći PySpark SQL, JSON datoteka se čita u privremeni prikaz i DataFrame se prikazuje pomoću SELECT upita.