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 pysparkPä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 pysparkimport 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.