PySpark Leggi JSON()

Pyspark Leggi Json



Mentre si lavora con PySpark DataFrame, deve essere archiviato in PySpark DataFrame se si desidera elaborare i dati JSON. Dopo aver memorizzato nel DataFrame, possiamo applicare le diverse operazioni e metodi sui dati. Inoltre, ci sono così tanti vantaggi se convertiamo JSON in PySpark DataFrame poiché è semplice e possiamo trasformare/partizionare i dati in un modo più semplice.

Argomento dei contenuti:

Leggere JSON nel DataFrame PySpark usando Pandas.read_json()







Leggere JSON su PySpark DataFrame usando Spark.read.json()



Lettura di JSON in PySpark DataFrame utilizzando PySpark SQL



In questo tutorial, vedremo come leggere JSON nel PySpark DataFrame usando pandas.read_json(), spark.read.json() e spark.sql. In tutti gli scenari, esamineremo i diversi esempi considerando i diversi formati JSON.





Installa la libreria PySpark prima di implementare gli esempi seguenti.

pip installa pyspark

Dopo l'installazione riuscita, puoi vedere l'output come segue:



Leggere JSON nel DataFrame PySpark usando Pandas.read_json()

In PySpark, il metodo createDataFrame() viene utilizzato per creare direttamente il DataFrame. Qui, dobbiamo solo passare il file/percorso JSON al file JSON tramite il metodo pandas.read_json(). Questo metodo read_json() accetta il nome file/percorso disponibile nel modulo Pandas. Per questo motivo è necessario importare e utilizzare il modulo Pandas.

Sintassi:

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

Esempio:

Creiamo un file JSON denominato 'student_skill.json' che contiene 2 record. Qui, le chiavi/colonne sono “Studente 1” e “Studente 2”. Le righe sono nome, età, abilità1 e abilità2.

importa pyspark

importare panda

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# Utilizzo di pandas.read_json()

candidate_skills = linuxhint_spark_app.createDataFrame(pandas.read_json( 'student_skill.json' ))

candidate_skills.mostra()

Produzione:

Possiamo vedere che i dati JSON vengono convertiti in PySpark DataFrame con colonne e righe specificate.

2. Leggere JSON su PySpark DataFrame usando Spark.read.json()

read.json() è un metodo simile a read_json() in Pandas. Qui, read.json() prende un percorso verso JSON o direttamente verso il file JSON e lo carica direttamente nel PySpark DataFrame. Non è necessario utilizzare il metodo createDataFrame() in questo scenario. Se vuoi leggere più file JSON alla volta, dobbiamo passare un elenco di nomi di file JSON attraverso un elenco separato da virgole. Tutti i record JSON sono archiviati in un singolo DataFrame.

Sintassi:

File singolo - spark_app.read.json( 'nome_file.json' )

File multipli - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Scenario 1: lettura di JSON con riga singola

Se il tuo file JSON è nei formati record1, record2, record3… (riga singola), possiamo chiamarlo come JSON con righe singole. Spark elabora questi record e li archivia in PySpark DataFrame come righe. Ogni record è una riga nel PySpark DataFrame.

Creiamo un file JSON denominato 'candidate_skills.json' che contiene 3 record. Leggi questo JSON nel PySpark DataFrame.

importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# Leggi candidate_skills.json nel PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

candidate_skills.mostra()

Produzione:

Possiamo vedere che i dati JSON vengono convertiti in PySpark DataFrame con record e nomi di colonna specificati.

Scenario 2: lettura di JSON con più righe

Se il tuo file JSON ha più righe, devi utilizzare il metodo read.option().json() per passare il parametro multiline che deve essere impostato su true. Questo ci consente di caricare JSON con più righe nel PySpark DataFrame.

read.option( 'multilinea' , 'VERO' ).json( 'nome_file.json' )

Creiamo un file JSON denominato 'multi.json' che contiene 3 record. Leggi questo JSON nel PySpark DataFrame.

importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# Leggi multi.json (con più righe) nel PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.option( 'multilinea' , 'VERO' ).json( 'multi.json' )

candidate_skills.mostra()

Produzione:

Scenario 3: lettura di più JSON

Abbiamo già discusso nella fase iniziale di questo tutorial riguardo a più file JSON. Se vuoi leggere più file JSON alla volta e memorizzarli in un singolo PySpark DataFrame, dobbiamo passare un elenco di nomi di file al metodo read.json().

Creiamo due file JSON denominati 'candidate_skills.json' e 'candidate_skills2.json' e li carichiamo nel PySpark DataFrame.

Il file 'candidate_skills.json' contiene tre record.

Il file 'candidate_skill2.json' contiene un solo record.

importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# Leggi i file candidate_skills e candidate_skills2 alla volta nel PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json([ 'candidate_skills.json' , 'candidate_skills2.json' ])

candidate_skills.mostra()

Produzione:

Infine, DataFrame contiene quattro record. I primi tre record appartengono al primo JSON e gli ultimi record appartengono al secondo JSON.

Leggere JSON su PySpark DataFrame usando Spark.read.json()

read.json() è un metodo simile a read_json() in Pandas. Qui, read.json() prende un percorso verso JSON o direttamente verso il file JSON e lo carica direttamente nel PySpark DataFrame. Non è necessario utilizzare il metodo createDataFrame() in questo scenario. Se vuoi leggere più file JSON alla volta, dobbiamo passare un elenco di nomi di file JSON attraverso un elenco separato da virgola. Tutti i record JSON sono archiviati in un singolo DataFrame.

Sintassi:

File singolo - spark_app.read.json( 'nome_file.json' )

File multipli - spark_app.read.json([ 'file1.json' , 'file2.json' ,...])

Scenario 1: lettura di JSON con riga singola

Se il tuo file JSON è nel formato record1, record2, record3... (riga singola), possiamo chiamarlo come JSON con righe singole. Spark elabora questi record e li archivia in PySpark DataFrame come righe. Ogni record è una riga nel PySpark DataFrame.

Creiamo un file JSON denominato 'candidate_skills.json' che contiene 3 record. Leggi questo JSON nel PySpark DataFrame.

importa pyspark

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# Leggi candidate_skills.json nel PySpark DataFrame

candidate_skills = linuxhint_spark_app.read.json( 'candidate_skills.json' )

candidate_skills.mostra()

Produzione:

Possiamo vedere che i dati JSON vengono convertiti in PySpark DataFrame con record e nomi di colonna specificati.

Lettura di JSON in PySpark DataFrame utilizzando PySpark SQL

È possibile creare una visualizzazione temporanea dei nostri dati JSON utilizzando PySpark SQL. Direttamente, possiamo fornire il JSON al momento della creazione della vista temporanea. Guarda la seguente sintassi. Successivamente, possiamo usare il comando SELECT per visualizzare il PySpark DataFrame.

Sintassi:

spark_app.sql( 'CREATE TEMPORARY VIEW VIEW_NAME UTILIZZANDO JSON OPTIONS (percorso 'file_name.json')' )

Qui, 'VIEW_NAME' è la vista dei dati JSON e 'file_name' è il nome del file JSON.

Esempio 1:

Considera il file JSON utilizzato negli esempi precedenti: 'candidate_skills.json'. Selezionare tutte le righe dal DataFrame utilizzando SELECT con l'operatore '*'. Qui, * seleziona tutte le colonne dal PySpark DataFrame.

importa pyspark

importare panda

da pyspark.sql importa SparkSession

linuxhint_spark_app = SparkSession.builder.appName( 'Suggerimento per Linux' ).getOrCreate()

# Utilizzo di spark.sql per creare VIEW dal JSON

candidate_skills = linuxhint_spark_app.sql( 'CREATE TEMPORARY VIEW Candidate_data UTILIZZANDO JSON OPTIONS (percorso 'candidate_skills.json')' )

# Usa la query SELECT per selezionare tutti i record da Candidate_data.

linuxhint_spark_app.sql( 'SELEZIONA * da Candidate_data' ).spettacolo()

Produzione:

Il numero totale di record nel DataFrame PySpark (letto da JSON) è 3.

Esempio 2:

Ora, filtra i record nel DataFrame PySpark in base alla colonna dell'età. Utilizzare l'operatore 'maggiore di' sull'età per ottenere le righe con un'età maggiore di 22.

# Utilizzare la query SELECT per selezionare i record con età > 22.

linuxhint_spark_app.sql( 'SELECT * from Candidate_data where age>22' ).spettacolo()

Produzione:

È presente un solo record in PySpark DataFrame con un'età maggiore di 22.

Conclusione

Abbiamo imparato i tre diversi modi per leggere il JSON nel PySpark DataFrame. Innanzitutto, abbiamo appreso come utilizzare il metodo read_json() disponibile nel modulo Pandas per leggere JSON in PySpark DataFrame. Successivamente, abbiamo imparato a leggere i file JSON a riga singola/multilinea utilizzando il metodo spark.read.json() con option(). Per leggere più file JSON alla volta, dobbiamo passare un elenco di nomi di file a questo metodo. Utilizzando PySpark SQL, il file JSON viene letto nella vista temporanea e il DataFrame viene visualizzato utilizzando la query SELECT.