Pyspark Explode ed Explode_Outer

Pyspark Explode ed Explode_Outer
In Python, Pyspark è un modulo Spark utilizzato per fornire un tipo di elaborazione simile come Spark utilizzando DataFrame. Fornisce il StructType () E StructField () Metodi che vengono utilizzati per definire le colonne nel frame dati pyspark.

Usando questi metodi, possiamo definire i nomi delle colonne e i tipi di dati delle colonne.

StructType ()

Questo metodo viene utilizzato per definire la struttura del frame di dati Pyspark. Accetterà un elenco di tipi di dati insieme ai nomi delle colonne per il determinato dati di dati. Questo è noto come lo schema del telaio. Memorizza una collezione di campi

StructField ()

Questo metodo viene utilizzato all'interno del StructType () Metodo del Frame di dati Pyspark. Accetterà i nomi delle colonne con il tipo di dati.

ArrayType ()

Questo metodo viene utilizzato per definire la struttura dell'array del frame dati pyspark. Accetterà un elenco di tipi di dati. Memorizza una collezione di campi. Possiamo posizionare i dati all'interno ArrayType (). In questo articolo, dobbiamo creare un frame dati con un array.

Creiamo un frame dati con 2 colonne. La prima colonna è Student_Category che si riferisce al campo intero per archiviare gli ID studenteschi. La seconda colonna - Student_full_name viene utilizzata per archiviare i valori di stringa in un array creato utilizzando ArrayType ().

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
#e importanti tipi di strutture e altri tipi di dati
da pyspark.SQL.Tipi Import StrucTType, Strucfield, StringType, IntegerType, Floattype, ArrayType
da pyspark.SQL.Funzioni Import Array_Contains
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# considera un array con 5 elementi
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, [k ',' a ',' k ']), ( 4, ['k']),
(3, ['b', 'p'])]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
df.spettacolo()

Produzione:

esplodere()

Ora vedremo cosa esplodere() fa. esplodere() restituirà ogni singolo valore da un array. Se l'array è vuoto o nullo, ignorerà e andrà all'array successivo in una colonna tipo array in PysPark DataFrame. Questo è possibile usando il Selezionare() metodo. All'interno di questo metodo, possiamo usare il array_min () funzione e restituire il risultato.

Sintassi:

DataFrame.Seleziona (Explode (Array_Column))

Parametri:
- Array_column: contiene valori di tipo array
Ritorno:
- Restituirà tutti i valori in un array in tutte le righe in una colonna di tipo array in un frame dati pyspark.

Esempio 1:

In questo esempio, restituiremo tutti i valori in un array dalla colonna Student_Full_name.

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
#e importanti tipi di strutture e altri tipi di dati
da pyspark.SQL.Tipi Import StrucTType, Strucfield, StringType, IntegerType, Floattype, ArrayType
da pyspark.SQL.funzioni importanti *
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# considera un array con 5 elementi
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, [k ',' a ',' k ']),
(4, ['k']), (3, ['b', 'p']]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
# Applica Explode sulla colonna Student_Full_Name
df.Select ("Student_full_name", Explode ('Student_full_name')).spettacolo()

Produzione:

Possiamo vedere che nella seconda colonna, ogni valore nell'array di ogni riga viene restituito.

Ora, vediamo cosa succede se i valori dell'array sono vuoti.

Esempio 2:

Questo frame dati non ha valori nell'array.

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
#e importanti tipi di strutture e altri tipi di dati
da pyspark.SQL.Tipi Import StrucTType, Strucfield, StringType, IntegerType, Floattype, ArrayType
da pyspark.SQL.funzioni importanti *
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# considera un array con 5 elementi
my_array_data = [(1, []), (2, []), (3, []), (4, []), (3, [])]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
# Explode la colonna Student_Full_name
df.Select ("Student_full_name", Explode ('Student_full_name')).spettacolo()

Produzione:

Non restituisce nulla poiché tutti i valori mancano nella colonna Array - Student_full_name.

explode_outer ()

Ora vedremo cosa explode_outer () fa. explode_outer () restituirà ogni singolo valore da un array. Se l'array è vuoto o nullo, restituisce null e vai all'array successivo in una colonna tipo array in PysPark DataFrame. Questo è possibile usando il Selezionare() metodo. All'interno di questo metodo, possiamo usare il array_min () funzione e restituire il risultato.

Sintassi:

DataFrame.Seleziona (explode_outer (array_column))

Parametri:
- Array_column: contiene valori di tipo array

Ritorno:
- Restituirà tutti i valori in un array in tutte le righe in una colonna di tipo array in un frame dati pyspark.

La differenza tra esplodere() E explode_outer () è questo, esplodere() non restituirà nulla quando non ci sono valori nell'array. Ma explode_outer () restituire null quando non ci sono valori nell'array.

Esempio 1:

In questo esempio, restituiremo tutti i valori in un array dalla colonna Student_Full_name.

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
#e importanti tipi di strutture e altri tipi di dati
da pyspark.SQL.Tipi Import StrucTType, Strucfield, StringType, IntegerType, Floattype, ArrayType
da pyspark.SQL.funzioni importanti *
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# considera un array con 5 elementi
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, [k ',' a ',' k ']),
(4, ['k']), (3, ['b', 'p']]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
# Applica explode_outer sulla colonna Student_Full_name
df.Select ("Student_full_name", explode_outer ('Student_full_name')).spettacolo()

Produzione:

Ora, vediamo cosa succede se i valori dell'array sono vuoti.

Esempio 2:

Questo frame dati non ha valori nell'array.

#import il modulo pyspark
importare pyspark
#IMPORT SPARKSESSION per la creazione di una sessione
da pyspark.SQL Importazione di importazione
#e importanti tipi di strutture e altri tipi di dati
da pyspark.SQL.Tipi Import StrucTType, Strucfield, StringType, IntegerType, Floattype, ArrayType
da pyspark.SQL.funzioni importanti *
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# considera un array con 5 elementi
my_array_data = [(1, []), (2, []), (3, []), (4, []), (3, [])]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
# Applica Explode_Outer La colonna Student_Full_Name
df.Select ("Student_full_name", explode_outer ('Student_full_name')).spettacolo()

Produzione:

Restituisce null in tutte le righe poiché tutti i valori mancano nella colonna dell'array- Student_full_name.

Conclusione

In questo articolo, abbiamo discusso esplodere() E explode_outer () Applicato sulla colonna del tipo di array nel frame dati con due diversi esempi. esplodere() E explode_outer () eseguirà qualche azione quando tutti i valori nell'array non sono nulli. Se qualche valore in un array è nullo, esplodere() Ignorerà quel valore null. Ma explode_outer () Considererà e restituirà il valore null ovunque il valore null sia presente nell'array.