PySpark Prečítajte si JSON()

Pyspark Precitajte Si Json



Pri práci s PySpark DataFrames je potrebné, aby boli uložené v PySpark DataFrame, ak chcete spracovávať dáta JSON. Po uložení do DataFrame môžeme na dátach aplikovať rôzne operácie a metódy. Tiež existuje toľko výhod, ak konvertujeme JSON na PySpark DataFrame, pretože je to jednoduché a môžeme transformovať/rozdeľovať údaje jednoduchším spôsobom.

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 pyspark

Po ú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ť pyspark

importovať 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.