PySpark skaitymas JSON ()

Pyspark Skaitymas Json



Dirbant su PySpark DataFrames, jis turi būti saugomas PySpark DataFrame, jei norite apdoroti JSON duomenis. Išsaugoję „DataFrame“, duomenims galime taikyti įvairias operacijas ir metodus. Be to, yra tiek daug pranašumų, jei konvertuosime JSON į PySpark DataFrame, nes tai paprasta ir galime paprastesniu būdu transformuoti / skaidyti duomenis.

Turinio tema:

JSON skaitymas į PySpark DataFrame naudojant Pandas.read_json()







JSON nuskaitymas į PySpark DataFrame naudojant Spark.read.json()



JSON skaitymas į PySpark DataFrame naudojant PySpark SQL



Šioje pamokoje apžvelgsime, kaip perskaityti JSON į PySpark DataFrame naudojant pandas.read_json(), spark.read.json() ir spark.sql. Visuose scenarijuose pažvelgsime į skirtingus pavyzdžius, atsižvelgdami į skirtingus JSON formatus.





Prieš įgyvendindami šiuos pavyzdžius, įdiekite PySpark biblioteką.

pip įdiegti pyspark

Sėkmingai įdiegę išvestį galite pamatyti taip:



JSON skaitymas į PySpark DataFrame naudojant Pandas.read_json()

„PySpark“ tiesiogiai „DataFrame“ sukurti naudojamas metodas createDataFrame(). Čia mes tiesiog turime perduoti JSON failą / kelią į JSON failą naudodami pandas.read_json() metodą. Šis read_json() metodas paima failo pavadinimą / kelią, kuris yra Pandas modulyje. Štai kodėl būtina importuoti ir naudoti Pandas modulį.

Sintaksė:

spark_app.createDataFrame(pandas.read_json( „failo_pavadinimas.json“ ))

Pavyzdys:

Sukurkime JSON failą pavadinimu „student_skill.json“, kuriame yra 2 įrašai. Čia klavišai / stulpeliai yra „Studentas 1“ ir „Studentas 2“. Eilutės yra vardas, amžius, įgūdžiai1 ir įgūdžiai2.

importuoti pyspark

importuoti pandas

iš pyspark.sql importuoti SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux patarimas“ ).getOrCreate()

# Naudojant pandas.read_json()

Kandidato_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( „student_skill.json“ ))

kandidatas_skills.show()

Išvestis:

Matome, kad JSON duomenys konvertuojami į PySpark DataFrame su nurodytais stulpeliais ir eilutėmis.

2. JSON skaitymas į PySpark DataFrame naudojant Spark.read.json()

Read.json() yra metodas, panašus į read_json() Pandas. Čia read.json() nukeliauja į JSON arba tiesiai į JSON failą ir tiesiogiai įkelia jį į PySpark DataFrame. Šiame scenarijuje nereikia naudoti metodo createDataFrame(). Jei norite skaityti kelis JSON failus vienu metu, turime perduoti JSON failų pavadinimų sąrašą per kableliais atskirtą sąrašą. Visi JSON įrašai saugomi viename DataFrame.

Sintaksė:

Vienas failas – spark_app.read.json( „failo_pavadinimas.json“ )

Keli failai – spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

1 scenarijus: perskaitykite JSON, kuriame yra viena eilutė

Jei JSON failas yra įrašo1, įrašo2, įrašo3… (vienos eilutės) formatų, galime jį vadinti JSON su atskiromis eilutėmis. „Spark“ apdoroja šiuos įrašus ir išsaugo juos „PySpark DataFrame“ kaip eilutes. Kiekvienas įrašas yra „PySpark DataFrame“ eilutė.

Sukurkime JSON failą pavadinimu „candidate_skills.json“, kuriame yra 3 įrašai. Perskaitykite šį JSON į PySpark DataFrame.

importuoti pyspark

iš pyspark.sql importuoti SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux patarimas“ ).getOrCreate()

# Perskaitykite kandidāt_skills.json į PySpark DataFrame

Kandidato_skills = linuxhint_spark_app.read.json( „candidate_skills.json“ )

kandidatas_skills.show()

Išvestis:

Matome, kad JSON duomenys konvertuojami į PySpark DataFrame su nurodytais įrašais ir stulpelių pavadinimais.

2 scenarijus: perskaitykite JSON, kuriame yra kelios eilutės

Jei JSON faile yra kelios eilutės, turite naudoti read.option().json() metodą, kad perduotumėte kelių eilučių parametrą, kuris turi būti nustatytas kaip tiesa. Tai leidžia mums įkelti JSON, turintį kelias eilutes, į PySpark DataFrame.

read.option( 'daugia eilute' , 'tiesa' .json( 'failo_pavadinimas.json' )

Sukurkime JSON failą pavadinimu „multi.json“, kuriame yra 3 įrašai. Perskaitykite šį JSON į PySpark DataFrame.

importuoti pyspark

iš pyspark.sql importuoti SparkSession

linuxhint_spark_app = SparkSession.builder.appName( „Linux patarimas“ ).getOrCreate()

# Skaitykite multi.json (turintis kelias eilutes) į PySpark DataFrame

Kandidato_skills = linuxhint_spark_app.read.option( 'daugia eilute' , 'tiesa' .json( 'multi.json' )

kandidatas_skills.show()

Išvestis:

3 scenarijus: skaitykite kelis JSON

Jau aptarėme pradiniame šios mokymo programos etape apie kelis JSON failus. Jei norite skaityti kelis JSON failus vienu metu ir saugoti juos viename PySpark DataFrame, turime perduoti failų pavadinimų sąrašą read.json() metodui.

Sukurkime du JSON failus, pavadintus „candidate_skills.json“ ir „candidate_skills2.json“, ir įkelkime juos į „PySpark DataFrame“.

Faile „candidate_skills.json“ yra trys įrašai.

Failas „candidate_skill2.json“ turi tik vieną įrašą.

importuoti pyspark

iš pyspark.sql importuoti SparkSession

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

# Skaitykite kandidatų_skills ir kandidatų_skills2 failus vienu metu į PySpark DataFrame

Kandidato_skills = linuxhint_spark_app.read.json([ „candidate_skills.json“ , „candidate_skills2.json“ ])

kandidatas_skills.show()

Išvestis:

Galiausiai „DataFrame“ turi keturis įrašus. Pirmieji trys įrašai priklauso pirmajam JSON, o paskutiniai – antrajam JSON.

JSON nuskaitymas į PySpark DataFrame naudojant Spark.read.json()

Read.json() yra metodas, panašus į read_json() Pandas. Čia read.json() nukeliauja į JSON arba tiesiai į JSON failą ir įkelia jį tiesiai į PySpark DataFrame. Šiame scenarijuje nereikia naudoti metodo createDataFrame(). Jei norite skaityti kelis JSON failus vienu metu, turime perduoti JSON failų pavadinimų sąrašą per kableliais atskirtą sąrašą. Visi JSON įrašai saugomi viename DataFrame.

Sintaksė:

Vienas failas – spark_app.read.json( „failo_pavadinimas.json“ )

Keli failai – spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

1 scenarijus: perskaitykite JSON, kuriame yra viena eilutė

Jei JSON failas yra įrašo1, įrašo2, įrašo3… (vienos eilutės) formatu, galime jį vadinti JSON su atskiromis eilutėmis. „Spark“ apdoroja šiuos įrašus ir išsaugo juos „PySpark DataFrame“ kaip eilutes. Kiekvienas įrašas yra „PySpark DataFrame“ eilutė.

Sukurkime JSON failą pavadinimu „candidate_skills.json“, kuriame yra 3 įrašai. Perskaitykite šį JSON į PySpark DataFrame.

importuoti pyspark

iš pyspark.sql importuoti SparkSession

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

# Perskaitykite kandidāt_skills.json į PySpark DataFrame

Kandidato_skills = linuxhint_spark_app.read.json( „candidate_skills.json“ )

kandidatas_skills.show()

Išvestis:

Matome, kad JSON duomenys konvertuojami į PySpark DataFrame su nurodytais įrašais ir stulpelių pavadinimais.

JSON skaitymas į PySpark DataFrame naudojant PySpark SQL

Gali būti įmanoma sukurti laikiną mūsų JSON duomenų rodinį naudojant PySpark SQL. Tiesiogiai galime pateikti JSON kurdami laikinąjį rodinį. Pažvelkite į šią sintaksę. Po to galime naudoti komandą SELECT, kad būtų rodomas PySpark DataFrame.

Sintaksė:

spark_app.sql( „SUKURTI LAIKINĄJĄ RODINĮ VIEW_NAME, NAUDOJANT JSON OPTIONS (kelias „failo_pavadinimas.json“)“ )

Čia „VIEW_NAME“ yra JSON duomenų rodinys, o „file_name“ yra JSON failo pavadinimas.

1 pavyzdys:

Apsvarstykite JSON failą, kuris buvo naudojamas ankstesniuose pavyzdžiuose – „candidate_skills.json“. Pasirinkite visas DataFrame eilutes naudodami SELECT su „*“ operatoriumi. Čia * pasirenka visus stulpelius iš PySpark DataFrame.

importuoti pyspark

importuoti pandas

iš pyspark.sql importuoti SparkSession

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

# Naudokite spark.sql, kad sukurtumėte VIEW iš JSON

Kandidato_skills = linuxhint_spark_app.sql( „KURTI LAIKINĄJĄ PERŽIŪRĄ „Candidate_data“ NAUDOJANT JSON OPTIONS (kelias „candidate_skills.json“)“ )

# Naudokite SELECT užklausą, kad pasirinktumėte visus įrašus iš kandidato_duomenų.

linuxhint_spark_app.sql( „SELECT * from Candidate_data“ ).Rodyti()

Išvestis:

Bendras PySpark DataFrame įrašų skaičius (nuskaitytas iš JSON) yra 3.

2 pavyzdys:

Dabar filtruokite PySpark DataFrame įrašus pagal amžiaus stulpelį. Norėdami gauti eilutes, kurių amžius yra didesnis nei 22, naudokite amžiaus operatorių „didesnis nei“.

# Naudokite užklausą SELECT, kad pasirinktumėte įrašus, kurių amžius > 22.

linuxhint_spark_app.sql( „SELECT * from Candidate_data, kur amžius > 22“ ).Rodyti()

Išvestis:

PySpark DataFrame yra tik vienas įrašas, kurio amžius yra didesnis nei 22 metai.

Išvada

Sužinojome tris skirtingus būdus, kaip skaityti JSON į PySpark DataFrame. Pirmiausia sužinojome, kaip naudoti „Pandas“ modulyje esantį metodą „read_json()“, kad galėtume nuskaityti JSON į „PySpark DataFrame“. Tada sužinojome, kaip skaityti vienos / kelių eilučių JSON failus naudojant spark.read.json() metodą su option(). Norėdami vienu metu skaityti kelis JSON failus, šiam metodui turime perduoti failų pavadinimų sąrašą. Naudojant PySpark SQL, JSON failas nuskaitomas į laikinąjį rodinį, o DataFrame rodomas naudojant SELECT užklausą.