Pyspark array_contains

Pyspark array_contains
Questo articolo introdurrà e dimostrerà Pyspark array_contains () metodo. Il metodo viene utilizzato per verificare se esistono valori specifici all'interno di un array in pyspark.

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 usando 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:

Ora vedremo cosa fare Array_Contains ().

array_contains () viene utilizzato per verificare se l'array ha l'elemento specificato. Se sì, tornerà vero, altrimenti falso.

Questo è possibile controllare utilizzando il metodo Select (). All'interno di questo metodo, possiamo usare la funzione Array_Contains () e restituire il risultato.

Sintassi:

DataFrame.Select (Array_Contains (Array_Column, Value '))

Parametri:

  1. array_column contiene valori di tipo array
  2. Il valore viene utilizzato per verificare se esiste in Array_Column o no.

Ritorno:

Restituirà vero/falso su tutte le righe in una colonna di array.

Esempio 1:

In questo esempio, verificheremo se la colonna Student_full_name ha 'l' in tutte le righe usando la funzione Array_Contains ().

#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)
# Controlla la funzione Student_Full_Name - L in tutte le righe usando la funzione Array_Contains ().
df.Select ("Student_full_name", Array_Contains ('Student_full_Name', 'l')).spettacolo()

Produzione:

Qui, abbiamo selezionato le colonne Student_Full_Name. La prima colonna è la colonna effettiva e la seconda colonna è il risultato restituito dalla funzione Array_Contains ().

Solo la seconda riga ha un valore 'l', quindi restituisce vero e il resto risulta su False.

Esempio 2:

In questo esempio, verificheremo se la colonna Student_full_name ha 'k' in tutte le righe usando la funzione Array_Contains ().

#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)
# Controlla la funzione Student_Full_Name - K in tutte le righe usando la funzione Array_Contains ().
df.Select ("Student_full_name", Array_Contains ('Student_full_Name', 'K')).spettacolo()

Produzione:

Qui, abbiamo selezionato le colonne Student_Full_Name. La prima colonna è la colonna effettiva e la seconda colonna è il risultato restituito dalla funzione Array_Contains ().

Solo la terza e la quarta riga ha un valore "k", quindi restituisce vero e il resto risulta su False.

Ora, se si desidera restituire l'intera riga nel frame dati, in base al valore specificato nel metodo Array_Contains (), è possibile utilizzare la clausola di Where o Filter () anziché selezionare la clausola.

Esempio 1: usando dove ()

In questo esempio, restituiremo la riga in cui la colonna Student_full_name ha 'k' utilizzando la funzione Array_Contains ().

#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)
# Restituisci la funzione Student_full_Same - K usando Array_Contains ().
df.dove (Array_Contains ('Student_full_name', 'k')).spettacolo()

Produzione:

Puoi vedere che le righe sono state restituite dove il valore Student_Full_ ha un valore k.

Esempio 2: usando il filtro ()

In questo esempio, restituiremo la riga in cui la colonna Student_Full_name ha 'k' utilizzando la funzione Array_Contains () con clausola di filtro.

#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)
# Restituisci la funzione Student_full_Same - K usando Array_Contains ().
df.Filtro (Array_Contains ('Student_full_name', 'K')).spettacolo()

Produzione:

Puoi vedere che le righe sono state restituite dove il valore Student_Full_ ha un valore k.

Conclusione

Siamo venuti a sapere che Array_Contains () viene utilizzato per verificare se il valore è presente in un array di colonne. Questo può essere ottenuto utilizzando la clausola selezionata.

Se è necessario restituire righe in cui l'array contiene valori, quindi invece di selezionare, è possibile utilizzare dove o filtro clausola.