Téma obsahu:
Čítanie JSON do dátového rámca PySpark pomocou Pandas.read_json()
Čítanie JSON do PySpark DataFrame pomocou Spark.read.json()
Čítanie JSON do PySpark DataFrame pomocou PySpark SQL
V tomto návode sa pozrieme na to, ako načítať JSON do dátového rámca PySpark pomocou pandas.read_json(), spark.read.json() a spark.sql. Vo všetkých scenároch sa pozrieme na rôzne príklady s ohľadom na rôzne formáty JSON.
Pred implementáciou nasledujúcich príkladov nainštalujte knižnicu PySpark.
pip install pysparkPo úspešnej inštalácii môžete vidieť výstup takto:
Čítanie JSON do dátového rámca PySpark pomocou Pandas.read_json()
V PySpark sa metóda createDataFrame() používa na priame vytvorenie DataFrame. Tu nám stačí odovzdať súbor/cestu JSON k súboru JSON pomocou metódy pandas.read_json(). Táto metóda read_json() preberá názov súboru/cestu, ktorá je dostupná v module Pandas. Preto je potrebné importovať a využívať modul Pandas.
Syntax:
spark_app.createDataFrame(pandas.read_json( 'názov_súboru.json' ))Príklad:
Vytvorme súbor JSON s názvom „student_skill.json“, ktorý obsahuje 2 záznamy. Tu sú kľúče/stĺpce „Študent 1“ a „Študent 2“. Riadky sú meno, vek, zručnosť1 a zručnosť2.
importovať pyspark
importovať pandy
z pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Použitie pandas.read_json()
kandidátske zručnosti = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))
kandidát_skills.show()
Výkon:
Vidíme, že údaje JSON sú konvertované na PySpark DataFrame so špecifikovanými stĺpcami a riadkami.
2. Čítanie JSON do PySpark DataFrame pomocou Spark.read.json()
Read.json() je metóda, ktorá je podobná metóde read_json() v Pandas. Tu read.json() vezme cestu k JSON alebo priamo k súboru JSON a priamo ho načíta do PySpark DataFrame. V tomto scenári nie je potrebné použiť metódu createDataFrame(). Ak chcete čítať viacero súborov JSON naraz, musíme zoznam názvov súborov JSON preniesť cez zoznam oddelený čiarkou. Všetky záznamy JSON sú uložené v jednom DataFrame.
Syntax:
Jeden súbor - spark_app.read.json( 'názov_súboru.json' )Viaceré súbory - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])
Scenár 1: Prečítajte si JSON s jedným riadkom
Ak je váš súbor JSON vo formátoch záznam1, záznam2, záznam3… (jeden riadok), môžeme ho nazvať ako JSON s jedným riadkom. Spark spracuje tieto záznamy a uloží ich v PySpark DataFrame ako riadky. Každý záznam je riadok v PySpark DataFrame.
Vytvorme súbor JSON s názvom „candidate_skills.json“, ktorý obsahuje 3 záznamy. Prečítajte si tento JSON do dátového rámca PySpark.
importovať pyspark
z pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Prečítajte si súbor kandidát_skills.json do dátového rámca PySpark
kandidátske zručnosti = linuxhint_spark_app.read.json( 'candidate_skills.json' )
kandidát_skills.show()
Výkon:
Vidíme, že údaje JSON sa skonvertujú na PySpark DataFrame so špecifikovanými záznamami a názvami stĺpcov.
Scenár 2: Prečítajte si JSON s viacerými riadkami
Ak má váš súbor JSON viacero riadkov, musíte použiť metódu read.option().json() na odovzdanie viacriadkového parametra, ktorý musí byť nastavený na hodnotu true. To nám umožňuje načítať JSON s viacerými riadkami do PySpark DataFrame.
read.option( 'viacriadkový' , 'pravda' .json( 'názov_súboru.json' )Vytvorme súbor JSON s názvom „multi.json“, ktorý obsahuje 3 záznamy. Prečítajte si tento JSON do dátového rámca PySpark.
importovať pyspark
z pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Prečítajte si súbor multi.json (s viacerými riadkami) do dátového rámca PySpark
kandidátske zručnosti = linuxhint_spark_app.read.option( 'viacriadkový' , 'pravda' .json( 'multi.json' )
kandidát_skills.show()
Výkon:
Scenár 3: Čítanie viacerých JSON
Už sme diskutovali v počiatočnej fáze tohto tutoriálu o viacerých súboroch JSON. Ak chcete čítať viacero súborov JSON naraz a uložiť ich do jedného dátového rámca PySpark, musíme metóde read.json() odovzdať zoznam názvov súborov.
Vytvorme dva súbory JSON s názvom „candidate_skills.json“ a „candidate_skills2.json“ a načítajme ich do dátového rámca PySpark.
Súbor „candidate_skills.json“ obsahuje tri záznamy.
Súbor „candidate_skill2.json“ obsahuje iba jeden záznam.
importovať pyspark
z pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Čítajte súbory kandidát_skills a kandidát_skills2 naraz do dátového rámca PySpark
kandidátske zručnosti = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])
kandidát_skills.show()
Výkon:
Nakoniec DataFrame obsahuje štyri záznamy. Prvé tri záznamy patria do prvého JSON a posledné záznamy patria do druhého JSON.
Čítanie JSON do PySpark DataFrame pomocou Spark.read.json()
Read.json() je metóda, ktorá je podobná metóde read_json() v Pandas. Tu read.json() vezme cestu k JSON alebo priamo k súboru JSON a načíta ho priamo do PySpark DataFrame. V tomto scenári nie je potrebné použiť metódu createDataFrame(). Ak chcete čítať viacero súborov JSON naraz, musíme zoznam názvov súborov JSON preniesť cez zoznam oddelený čiarkou. Všetky záznamy JSON sú uložené v jednom DataFrame.
Syntax:
Jeden súbor - spark_app.read.json( 'názov_súboru.json' )Viaceré súbory - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])
Scenár 1: Prečítajte si JSON s jedným riadkom
Ak je váš súbor JSON vo formáte záznam1, záznam2, záznam3… (jeden riadok), môžeme ho nazvať ako JSON s jedným riadkom. Spark spracuje tieto záznamy a uloží ich v PySpark DataFrame ako riadky. Každý záznam je riadok v PySpark DataFrame.
Vytvorme súbor JSON s názvom „candidate_skills.json“, ktorý obsahuje 3 záznamy. Prečítajte si tento JSON do dátového rámca PySpark.
importovať pyspark
z pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Prečítajte si súbor kandidát_skills.json do dátového rámca PySpark
kandidátske zručnosti = linuxhint_spark_app.read.json( 'candidate_skills.json' )
kandidát_skills.show()
Výkon:
Vidíme, že údaje JSON sa skonvertujú na PySpark DataFrame so špecifikovanými záznamami a názvami stĺpcov.
Čítanie JSON do PySpark DataFrame pomocou PySpark SQL
Pomocou PySpark SQL je možné vytvoriť dočasný pohľad na naše údaje JSON. Priamo môžeme poskytnúť JSON v čase vytvárania dočasného zobrazenia. Pozrite sa na nasledujúcu syntax. Potom môžeme použiť príkaz SELECT na zobrazenie PySpark DataFrame.
Syntax:
spark_app.sql( „VYTVORIŤ DOČASNÉ ZOBRAZENIE VIEW_NAME POMOCOU MOŽNOSTÍ json (cesta ‘názov_súboru.json’)“ )Tu je „VIEW_NAME“ zobrazenie údajov JSON a „file_name“ je názov súboru JSON.
Príklad 1:
Zvážte súbor JSON, ktorý sa používa v predchádzajúcich príkladoch – „candidate_skills.json“. Vyberte všetky riadky z DataFrame pomocou SELECT s operátorom „*“. Tu * vyberie všetky stĺpce z PySpark DataFrame.
importovať pysparkimportovať pandy
z pyspark.sql importujte SparkSession
linuxhint_spark_app = SparkSession.builder.appName( 'Linux Hint' ).getOrCreate()
# Použitie spark.sql na vytvorenie VIEW z JSON
kandidátske zručnosti = linuxhint_spark_app.sql( 'VYTVORIŤ DOČASNÉ ZOBRAZENIE Candidate_data POMOCOU MOŽNOSTÍ json (cesta 'candidate_skills.json')' )
# Použite dotaz SELECT na výber všetkých záznamov z údajov kandidáta.
linuxhint_spark_app.sql( 'SELECT * from Candidate_data' ).šou()
Výkon:
Celkový počet záznamov v PySpark DataFrame (načítaných z JSON) je 3.
Príklad 2:
Teraz filtrujte záznamy v PySpark DataFrame na základe stĺpca veku. Ak chcete získať riadky s vekom vyšším ako 22 rokov, použite operátor „väčší ako“.
# Pomocou dotazu SELECT vyberte záznamy s vekom > 22.linuxhint_spark_app.sql( 'SELECT * from Candidate_data kde vek>22' ).šou()
Výkon:
V PySpark DataFrame je len jeden záznam s vekom vyšším ako 22 rokov.
Záver
Naučili sme sa tri rôzne spôsoby čítania JSON do dátového rámca PySpark. Najprv sme sa naučili, ako používať metódu read_json(), ktorá je k dispozícii v module Pandas, na čítanie JSON do PySpark DataFrame. Ďalej sme sa naučili čítať jednoriadkové/viacriadkové súbory JSON pomocou metódy spark.read.json() s možnosťou(). Na čítanie viacerých súborov JSON naraz musíme tejto metóde odovzdať zoznam názvov súborov. Pomocou PySpark SQL sa súbor JSON načíta do dočasného zobrazenia a DataFrame sa zobrazí pomocou dotazu SELECT.