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 pysparkSė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 pysparkimportuoti 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ą.