PySparki lugemine JSON()

Pysparki Lugemine Json



PySpark DataFramesiga töötades tuleb see salvestada PySpark DataFrame'i, kui soovite JSON-andmeid töödelda. Pärast DataFrame'i salvestamist saame andmetele rakendada erinevaid toiminguid ja meetodeid. Samuti on JSON-i PySpark DataFrame'iks teisendamisel palju eeliseid, kuna see on lihtne ja saame andmeid lihtsamalt teisendada/jaotada.

Sisu teema:

JSON-i lugemine PySpark DataFrame'i, kasutades Pandas.read_json()







JSON-i lugemine PySpark DataFrame'i, kasutades Spark.read.json()



JSON-i lugemine PySpark DataFrame'i PySpark SQL-i abil



Selles õpetuses vaatleme, kuidas lugeda JSON-i PySpark DataFrame'i kasutades pandas.read_json(), spark.read.json() ja spark.sql. Kõigi stsenaariumide puhul vaatleme erinevaid näiteid, võttes arvesse erinevaid JSON-vorminguid.





Enne järgmiste näidete rakendamist installige PySparki teek.

pip install pyspark

Pärast edukat installimist näete väljundit järgmiselt:



JSON-i lugemine PySpark DataFrame'i, kasutades Pandas.read_json()

PySparkis kasutatakse DataFrame'i otse loomiseks meetodit createDataFrame(). Siin peame lihtsalt edastama JSON-faili/tee JSON-failile meetodi pandas.read_json() kaudu. See read_json() meetod võtab failinime/tee, mis on saadaval Pandase moodulis. Seetõttu on vaja Panda moodulit importida ja kasutada.

Süntaks:

spark_app.createDataFrame(pandas.read_json( 'faili_nimi.json' ))

Näide:

Loome JSON-faili nimega „student_skill.json”, mis sisaldab kahte kirjet. Siin on klahvid/veerud “Õpilane 1” ja “Õpilane 2”. Ridadel on nimi, vanus, oskus1 ja oskus2.

import pyspark

import pandad

pyspark.sql-st importige SparkSession

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

# Kasutades pandas.read_json()

Kandidaadi_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( „student_skill.json” ))

Kandidaadi_oskused.show()

Väljund:

Näeme, et JSON-andmed teisendatakse määratud veergude ja ridadega PySpark DataFrame'iks.

2. JSON-i lugemine PySpark DataFrame'i, kasutades Spark.read.json()

Read.json() on meetod, mis sarnaneb Pandase read_json()-ga. Siin viib read.json() tee JSON-i või otse JSON-faili ja laadib selle otse PySpark DataFrame'i. Selle stsenaariumi puhul pole vaja meetodit createDataFrame() kasutada. Kui soovite korraga lugeda mitut JSON-faili, peame edastama JSON-failide nimede loendi, mis on eraldatud komaga. Kõik JSON-kirjed salvestatakse ühte DataFrame'i.

Süntaks:

Üks fail – spark_app.read.json( 'faili_nimi.json' )

Mitu faili – spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

1. stsenaarium: lugege JSON-i, millel on üks rida

Kui teie JSON-fail on vormingus rekord1, rekord2, rekord3… (ühe rea), saame seda nimetada üksikute ridadega JSON-iks. Spark töötleb neid kirjeid ja salvestab need PySpark DataFrame'i ridadena. Iga kirje on PySpark DataFrame'i rida.

Loome JSON-faili nimega „candidate_skills.json”, mis sisaldab 3 kirjet. Lugege seda JSON-i PySpark DataFrame'i.

import pyspark

pyspark.sql-st importige SparkSession

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

# Lugege PySpark DataFrame'i sissekandidaat_skills.json

Kandidaadi_oskused = linuxhint_spark_app.read.json( „candidate_skills.json” )

Kandidaadi_oskused.show()

Väljund:

Näeme, et JSON-andmed teisendatakse määratud kirjete ja veerunimedega PySpark DataFrame'iks.

2. stsenaarium: lugege JSON-i, millel on mitu rida

Kui teie JSON-failil on mitu rida, peate mitmerealise parameetri edastamiseks kasutama meetodit read.option().json(), mille väärtuseks tuleb määrata tõene. See võimaldab meil laadida PySpark DataFrame'i JSON-i, millel on mitu rida.

read.option( 'mitmerealine' , 'tõsi' .json( 'faili_nimi.json' )

Loome JSON-faili nimega 'multi.json', mis sisaldab 3 kirjet. Lugege seda JSON-i PySpark DataFrame'i.

import pyspark

pyspark.sql-st importige SparkSession

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

# Lugege PySpark DataFrame'i sisse multi.json (millel on mitu rida).

Kandidaadi_skills = linuxhint_spark_app.read.option( 'mitmerealine' , 'tõsi' .json( 'multi.json' )

Kandidaadi_oskused.show()

Väljund:

3. stsenaarium: lugege mitut JSON-i

Arutasime juba selle õpetuse algusfaasis mitme JSON-faili kohta. Kui soovite korraga lugeda mitut JSON-faili ja salvestada need ühte PySpark DataFrame'i, peame failinimede loendi edastama meetodile read.json().

Loome kaks JSON-faili nimedega „candidate_skills.json” ja „candidate_skills2.json” ning laadime need PySparki andmeraami.

Fail „candidate_skills.json” sisaldab kolme kirjet.

Fail „candidate_skill2.json” sisaldab ainult ühte kirjet.

import pyspark

pyspark.sql-st importige SparkSession

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

# Lugege PySpark DataFrame'i korraga faile Kandidaadi_oskused ja Kandidaadi_oskused2

Kandidaadi_skills = linuxhint_spark_app.read.json([ „candidate_skills.json” , „candidate_skills2.json” ])

Kandidaadi_oskused.show()

Väljund:

Lõpuks hoiab DataFrame neli kirjet. Esimesed kolm kirjet kuuluvad esimesele JSON-ile ja viimased kirjed kuuluvad teisele JSON-ile.

JSON-i lugemine PySpark DataFrame'i, kasutades Spark.read.json()

Read.json() on meetod, mis sarnaneb Pandase read_json()-ga. Siin viib read.json() tee JSON-i või otse JSON-faili ja laadib selle otse PySpark DataFrame'i. Selle stsenaariumi puhul pole vaja meetodit createDataFrame() kasutada. Kui soovite korraga lugeda mitut JSON-faili, peame edastama JSON-failide nimede loendi, mis on eraldatud komaga. Kõik JSON-kirjed salvestatakse ühte DataFrame'i.

Süntaks:

Üks fail – spark_app.read.json( 'faili_nimi.json' )

Mitu faili – spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

1. stsenaarium: lugege JSON-i, millel on üks rida

Kui teie JSON-fail on vormingus rekord1, kirje2, kirje3… (ühe rea), saame seda nimetada üherealiseks JSON-iks. Spark töötleb neid kirjeid ja salvestab need PySpark DataFrame'i ridadena. Iga kirje on PySpark DataFrame'i rida.

Loome JSON-faili nimega „candidate_skills.json”, mis sisaldab 3 kirjet. Lugege seda JSON-i PySpark DataFrame'i.

import pyspark

pyspark.sql-st importige SparkSession

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

# Lugege PySpark DataFrame'i sissekandidaat_skills.json

Kandidaadi_oskused = linuxhint_spark_app.read.json( „candidate_skills.json” )

Kandidaadi_oskused.show()

Väljund:

Näeme, et JSON-andmed teisendatakse määratud kirjete ja veerunimedega PySpark DataFrame'iks.

JSON-i lugemine PySpark DataFrame'i PySpark SQL-i abil

PySpark SQL-i abil võib olla võimalik luua meie JSON-andmete ajutine vaade. JSON-i saame otse esitada ajutise vaate loomise ajal. Vaadake järgmist süntaksit. Pärast seda saame PySpark DataFrame'i kuvamiseks kasutada käsku SELECT.

Süntaks:

spark_app.sql( 'LOO AJUTINE VAADE VIEW_NAME, KASUTADES jsoni VALIKUD (tee faili_nimi.json)' )

Siin on „VIEW_NAME” JSON-andmete vaade ja „file_name” on JSON-faili nimi.

Näide 1:

Mõelge eelmistes näidetes kasutatud JSON-failile – „candidate_skills.json”. Valige DataFrame'ist kõik read, kasutades käsku SELECT koos operaatoriga “*”. Siin valib * kõik PySpark DataFrame'i veerud.

import pyspark

import pandad

pyspark.sql-st importige SparkSession

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

# Spark.sql kasutamine JSON-ist VIEW loomiseks

Kandidaadi_oskused = linuxhint_spark_app.sql( 'LOO AJUTINE VAATE Candidate_data, KASUTADES JSON OPTIONS (tee 'candidate_skills.json')' )

# Kasutage päringut SELECT, et valida kõik kandidaadi_andmed kirjed.

linuxhint_spark_app.sql( 'SELECT * kandidaadi_andmetest' ).show()

Väljund:

PySpark DataFrame'i (loetud JSON-ist) kirjete koguarv on 3.

Näide 2:

Nüüd filtreerige PySpark DataFrame'i kirjed vanuse veeru alusel. Kasutage vanuse märki „suurem kui”, et saada read, mille vanus on suurem kui 22.

# Kasutage päringut SELECT, et valida kirjed, mille vanus on > 22.

linuxhint_spark_app.sql( 'SELECT * Kandidaadi_andmetest, kus vanus >22' ).show()

Väljund:

PySpark DataFrame'is on ainult üks kirje, mille vanus on suurem kui 22.

Järeldus

Õppisime kolme erinevat viisi JSON-i lugemiseks PySpark DataFrame'i. Esiteks õppisime kasutama meetodit read_json(), mis on saadaval moodulis Pandas, et lugeda JSON-i PySpark DataFrame'i. Järgmisena õppisime lugema ühe-/mitmerealisi JSON-faile, kasutades meetodit spark.read.json() koos option(). Mitme JSON-faili korraga lugemiseks peame sellele meetodile edastama failinimede loendi. PySpark SQL-i abil loetakse JSON-fail ajutisesse vaatesse ja DataFrame kuvatakse päringu SELECT abil.