PySpark čtení JSON()

Pyspark Cteni Json



Při práci s PySpark DataFrames je třeba, aby byl uložen v PySpark DataFrame, pokud chcete zpracovávat data JSON. Po uložení do DataFrame můžeme s daty aplikovat různé operace a metody. Existuje také mnoho výhod, pokud převedeme JSON na PySpark DataFrame, protože je to jednoduché a můžeme transformovat/rozdělit data jednodušším způsobem.

Téma obsahu:

Čtení JSON do PySpark DataFrame pomocí Pandas.read_json()







Čtení JSON do PySpark DataFrame pomocí Spark.read.json()



Čtení JSON do PySpark DataFrame pomocí PySpark SQL



V tomto tutoriálu se podíváme na to, jak načíst JSON do PySpark DataFrame pomocí pandas.read_json(), spark.read.json() a spark.sql. Ve všech scénářích se podíváme na různé příklady s ohledem na různé formáty JSON.





Před implementací následujících příkladů nainstalujte knihovnu PySpark.

pip nainstalovat pyspark

Po úspěšné instalaci můžete vidět výstup takto:



Čtení JSON do PySpark DataFrame pomocí Pandas.read_json()

V PySpark se metoda createDataFrame() používá k přímému vytvoření DataFrame. Zde stačí předat soubor/cestu JSON souboru JSON pomocí metody pandas.read_json(). Tato metoda read_json() přebírá název souboru/cestu, která je k dispozici v modulu Pandas. Proto je nutné importovat a využívat modul Pandas.

Syntax:

spark_app.createDataFrame(pandas.read_json( 'název_souboru.json' ))

Příklad:

Vytvořme soubor JSON s názvem „student_skill.json“, který obsahuje 2 záznamy. Zde jsou klíče/sloupce „Student 1“ a „Student 2“. Řádky jsou jméno, věk, dovednost1 a dovednost2.

importovat pyspark

importovat pandy

z pyspark.sql importujte SparkSession

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

# Použití pandas.read_json()

kandidátské dovednosti = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

kandidát_skills.show()

Výstup:

Vidíme, že data JSON jsou převedena na PySpark DataFrame se zadanými sloupci a řádky.

2. Čtení JSON do PySpark DataFrame pomocí Spark.read.json()

Read.json() je metoda podobná read_json() v Pandas. Zde read.json() vezme cestu k JSON nebo přímo k souboru JSON a přímo jej načte do PySpark DataFrame. V tomto scénáři není nutné používat metodu createDataFrame(). Pokud chcete číst více souborů JSON najednou, musíme předat seznam názvů souborů JSON přes seznam oddělený čárkou. Všechny záznamy JSON jsou uloženy v jediném DataFrame.

Syntax:

Jeden soubor – spark_app.read.json( 'název_souboru.json' )

Více souborů – spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Scénář 1: Přečtěte si JSON s jedním řádkem

Pokud je váš soubor JSON ve formátech záznam1, záznam2, záznam3… (jeden řádek), můžeme jej nazvat jako JSON s jedním řádkem. Spark tyto záznamy zpracovává a ukládá je do PySpark DataFrame jako řádky. Každý záznam je řádek v PySpark DataFrame.

Vytvořme soubor JSON s názvem „candidate_skills.json“, který obsahuje 3 záznamy. Přečtěte si tento JSON do PySpark DataFrame.

importovat pyspark

z pyspark.sql importujte SparkSession

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

# Přečtěte si kandidát_skills.json do datového rámce PySpark

kandidátské dovednosti = linuxhint_spark_app.read.json( 'candidate_skills.json' )

kandidát_skills.show()

Výstup:

Vidíme, že data JSON jsou převedena do PySpark DataFrame se zadanými záznamy a názvy sloupců.

Scénář 2: Přečtěte si JSON s více řádky

Pokud má váš soubor JSON více řádků, musíte pomocí metody read.option().json() předat víceřádkový parametr, který musí být nastaven na hodnotu true. To nám umožňuje načíst JSON s více řádky do PySpark DataFrame.

read.option( 'víceřádkový' , 'skutečný' .json( 'název_souboru.json' )

Vytvořme soubor JSON s názvem „multi.json“, který obsahuje 3 záznamy. Přečtěte si tento JSON do PySpark DataFrame.

importovat pyspark

z pyspark.sql importujte SparkSession

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

# Přečtěte si multi.json (mající více řádků) do PySpark DataFrame

kandidátské dovednosti = linuxhint_spark_app.read.option( 'víceřádkový' , 'skutečný' .json( 'multi.json' )

kandidát_skills.show()

Výstup:

Scénář 3: Čtení více JSON

Již jsme diskutovali v počáteční fázi tohoto tutoriálu ohledně více souborů JSON. Pokud chcete číst více souborů JSON najednou a ukládat je do jednoho PySpark DataFrame, musíme předat seznam názvů souborů metodě read.json().

Vytvoříme dva soubory JSON s názvem „candidate_skills.json“ a „candidate_skills2.json“ a načteme je do PySpark DataFrame.

Soubor „candidate_skills.json“ obsahuje tři záznamy.

Soubor „candidate_skill2.json“ obsahuje pouze jeden záznam.

importovat pyspark

z pyspark.sql importujte SparkSession

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

# Přečtěte si soubory kandidáta_skills a kandidáta_skills2 najednou do PySpark DataFrame

kandidátské dovednosti = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])

kandidát_skills.show()

Výstup:

Nakonec DataFrame obsahuje čtyři záznamy. První tři záznamy patří do prvního JSON a poslední záznamy patří do druhého JSON.

Čtení JSON do PySpark DataFrame pomocí Spark.read.json()

Read.json() je metoda podobná read_json() v Pandas. Zde read.json() vezme cestu k JSON nebo přímo k souboru JSON a načte jej přímo do PySpark DataFrame. V tomto scénáři není nutné používat metodu createDataFrame(). Pokud chcete číst více souborů JSON najednou, musíme předat seznam názvů souborů JSON přes seznam oddělený čárkou. Všechny záznamy JSON jsou uloženy v jediném DataFrame.

Syntax:

Jeden soubor – spark_app.read.json( 'název_souboru.json' )

Více souborů – spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Scénář 1: Přečtěte si JSON s jedním řádkem

Pokud je váš soubor JSON ve formátu záznam1, záznam2, záznam3… (jeden řádek), můžeme jej nazvat jako JSON s jedním řádkem. Spark tyto záznamy zpracovává a ukládá je do PySpark DataFrame jako řádky. Každý záznam je řádek v PySpark DataFrame.

Vytvořme soubor JSON s názvem „candidate_skills.json“, který obsahuje 3 záznamy. Přečtěte si tento JSON do PySpark DataFrame.

importovat pyspark

z pyspark.sql importujte SparkSession

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

# Přečtěte si kandidát_skills.json do datového rámce PySpark

kandidátské dovednosti = linuxhint_spark_app.read.json( 'candidate_skills.json' )

kandidát_skills.show()

Výstup:

Vidíme, že data JSON jsou převedena do PySpark DataFrame se zadanými záznamy a názvy sloupců.

Čtení JSON do PySpark DataFrame pomocí PySpark SQL

Je možné vytvořit dočasný pohled na naše data JSON pomocí PySpark SQL. JSON můžeme poskytnout přímo při vytváření dočasného pohledu. Podívejte se na následující syntaxi. Poté můžeme pomocí příkazu SELECT zobrazit PySpark DataFrame.

Syntax:

spark_app.sql( 'VYTVOŘIT DOČASNÉ ZOBRAZENÍ VIEW_NAME POMOCÍ MOŽNOSTÍ JSON (cesta ‚název_souboru.json')' )

Zde je „VIEW_NAME“ zobrazením dat JSON a „file_name“ je název souboru JSON.

Příklad 1:

Zvažte soubor JSON, který je použit v předchozích příkladech – „candidate_skills.json“. Vyberte všechny řádky z DataFrame pomocí SELECT s operátorem „*“. Zde * vybere všechny sloupce z PySpark DataFrame.

importovat pyspark

importovat pandy

z pyspark.sql importujte SparkSession

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

# Použití spark.sql k vytvoření VIEW z JSON

kandidátské dovednosti = linuxhint_spark_app.sql( 'VYTVOŘIT DOČASNÉ ZOBRAZENÍ Candidate_data POMOCÍ MOŽNOSTÍ JSON (cesta 'candidate_skills.json')' )

# Použijte dotaz SELECT k výběru všech záznamů z Candidate_data.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data' ).ukázat()

Výstup:

Celkový počet záznamů v PySpark DataFrame (načtených z JSON) je 3.

Příklad 2:

Nyní filtrujte záznamy v PySpark DataFrame na základě sloupce věku. Pomocí operátoru „větší než“ pro věk získáte řádky s věkem vyšším než 22.

# Pomocí dotazu SELECT vyberte záznamy s věkem > 22.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data where age>22' ).ukázat()

Výstup:

V PySpark DataFrame je pouze jeden záznam s věkem vyšším než 22.

Závěr

Naučili jsme se tři různé způsoby, jak číst JSON do PySpark DataFrame. Nejprve jsme se naučili, jak používat metodu read_json(), která je k dispozici v modulu Pandas, ke čtení JSON do PySpark DataFrame. Dále jsme se naučili číst jednořádkové/víceřádkové soubory JSON pomocí metody spark.read.json() s volbou(). Abychom mohli číst více souborů JSON najednou, musíme této metodě předat seznam názvů souborů. Pomocí PySpark SQL se soubor JSON načte do dočasného zobrazení a DataFrame se zobrazí pomocí dotazu SELECT.