Pyspark array_union, array_intersect e array_except

Pyspark array_union, array_intersect e array_except
In Python, Pyspark è un modulo Spark utilizzato per fornire un tipo di elaborazione simile come Spark utilizzando DataFrame. Fornisce i metodi structType () e Structfield () 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 particolari.

Discutiamoli uno per uno

StructType ()

Questo metodo viene utilizzato per definire la struttura del frame 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 metodo structType () del Frame 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 dei dati all'interno di ArrayType ().

Quindi in questo articolo, dobbiamo creare un telaio di dati con un array. Creiamo un frame dati con 3 colonne. La prima colonna è Student_Category che si riferisce al campo intero per archiviare gli studenti e la seconda colonna - Student_First_name, terza colonna - Student_Last_name viene utilizzato 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 importanti *
#Crea un'app chiamata LinuxHint
Spark_app = SparkSession.costruttore.appname ('LinuxHint').getOrCreate ()
# considera un array con 5 elementi
my_array_data = [(1, ['a'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), ( 3, ['b', 'p'], ['a']]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_First_name", ArrayType (StringType ()), StructField ("Student_Last_Name", ArrayType (StringType ()))))))))))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
df.spettacolo()

Produzione

array_union ()

array_union () viene utilizzato per unirsi alle due colonne di tipo array nel frame dati pyspark restituendo i valori da entrambe le colonne dell'array in un array. Ci vogliono due colonne di tipo array come parametri.

Restituisce tutti i valori univoci (solo una volta).

Sintassi

Array_Union (Array_Column1, Array_Column2)

Parametri

  1. array_column1 è la prima colonna array che ha array con valori
  2. array_column2 è la seconda colonna di array che ha array con valori.

La funzione Array_Union () viene utilizzata con il metodo Select () per eseguire l'azione.

Esempio
In questo esempio, ci uniremo a due colonne di tipo Array - Student_First_name e Student_Last_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'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), ( 3, ['b', 'p'], ['a']]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_First_name", ArrayType (StringType ()), StructField ("Student_Last_Name", ArrayType (StringType ()))))))))))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
#Apply Array_Union su Student_First_Name e Student_Last_Name
df.Select ("Student_First_name", "Student_Last_Name",
Array_Union ("Student_First_Name", "Student_Last_Name")).spettacolo()

Produzione

Possiamo vederlo

  1. In First Row -[A] Union [a]: [a] (restituisce unica)
  2. Nella seconda fila - [b, l, b] unione [a]: [b, l, a]
  3. In terza fila - [k, a, k] unione [k, a, k]: [k, a] (solo k e a sono unici)
  4. In quarta fila -[k] Union [k, a, k]: [k, a] (solo k e a sono unici)
  5. In quinta fila -[b, p] unione [a]: [b, p, a]

Array_intersect ()

Array_intersect () viene utilizzato per unire le due colonne di tipo array nel PysPark DataFrame restituendo solo valori comuni da entrambi gli array in un nuovo array. Ci vogliono due colonne di tipo array come parametri.

Sintassi

Array_Intersect (Array_Column1, Array_Column2)

Parametri

  1. array_column1 è la prima colonna array che ha array con valori
  2. array_column2 è la seconda colonna di array che ha array con valori.

La funzione array_intersect () viene utilizzata con il metodo Select () per eseguire l'azione.

Esempio
In questo esempio, intersecheremo due colonne di tipo array - Student_First_name e Student_Last_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'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), ( 3, ['b', 'p'], ['a']]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_First_name", ArrayType (StringType ()), StructField ("Student_Last_Name", ArrayType (StringType ()))))))))))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
#Apply Array_Intersect su Student_First_Name e Student_Last_Name
df.Select ("Student_First_name", "Student_Last_Name",
Array_Intersect ("Student_First_name", "Student_Last_Name")).spettacolo()

Produzione

Possiamo vederlo

  1. Nella prima riga -[a] intersect [a]: [a] (a è comune)
  2. Nella seconda riga - [b, l, b] intersecare [a]: [] (nessun elemento è comune)
  3. In terza fila - [k, a, k] intersecano [k, a, k]: [k, a] (k e a sono comuni)
  4. In quarta riga -[k] intersect [k, a, k]: [k] (solo k è comune)
  5. In quinta riga -[b, p] intersecare [a]: [] (nessun elemento è comune)

array_except ()

Array_Except () viene utilizzato per unire le due colonne di tipo array nel Frame dati PysPark restituendo i valori in Array1 ma non in Array2.

Restituisce tutti i valori univoci (solo una volta).

Sintassi

Array_Except (Array_Column1, Array_Column2)

Parametri

  1. array_column1 è la prima colonna array che ha array con valori
  2. array_column2 è la seconda colonna di array che ha array con valori.

La funzione Array_Except () viene utilizzata con il metodo Select () per eseguire l'azione.

Esempio
In questo esempio, eseguiremo Array_Except due colonne di tipo array -

  1. Student_Last_name e Student_First_name
  2. Student_First_name e Student_Last_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'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' , 'A', 'k'], ['k', 'a', 'k']), (4, ['k'], ['k', 'a', 'k']), ( 3, ['b', 'p'], ['a']]
#Define The StructType e Structfields
#per i dati di cui sopra
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_First_name", ArrayType (StringType ()), StructField ("Student_Last_Name", ArrayType (StringType ()))))))))))))
#Crea dati e aggiungi lo schema al frame dati
df = spark_app.creatotaframe (my_array_data, schema = schema)
#Apply Array_Except su Student_Last_Name e Student_First_Name
df.Select ("Student_Last_name", "Student_First_Name",
Array_Except ("Student_Last_Name", "Student_First_Name")).spettacolo()
#Apply Array_Except su Student_First_Name e Student_Last_Name
df.Select ("Student_First_name", "Student_Last_Name",
Array_Except ("Student_First_name", "Student_Last_Name")).spettacolo()

Produzione

Di primo risultato

  1. [A] tranne [a] - [] (poiché a da column1 esiste anche in colonna2)
  2. [A] tranne [b, l, b] - [a] (poiché a da colonna non esiste in colonna2)
  3. [K, a, k] tranne [k, a, k] - [] (poiché k, a, k dalla colonna1 esiste anche in colonna2)
  4. [K, a, k] tranne [k] - [a] (poiché a dalla colonna non esiste in colonna2)
  5. [A] tranne [b, p] - [a] (poiché a dalla colonna non esiste in colonna2)

Nel secondo risultato

  1. [A] tranne [a] - [] (poiché a da column1 esiste anche in colonna2)
  2. [B, l, b] tranne [a] - [b, l] (poiché b, l dalla colonna non esiste in colonna2)
  3. [K, a, k] tranne [k, a, k] - [] (poiché k, a, k dalla colonna1 esiste anche in colonna2)
  4. [K] tranne [k, a, k] - [] (poiché K di colonna1 esiste anche in colonna2)
  5. [B, p] tranne [a] - [b, p] (poiché b, p dalla colonna non esiste in colonna2)

Conclusione

In questo tutorial, abbiamo visto tre diverse funzioni eseguite su colonne di tipo array in Pyspark DataFrame. array_union () viene utilizzato per unirsi alle due colonne di tipo array nel frame dati pyspark restituendo i valori da entrambe le colonne dell'array in un array. Array_intersect () viene utilizzato per unirsi alle due colonne di tipo array nel frame dati pyspark restituendo solo valori comuni da entrambi gli array in un nuovo array. array_except () viene utilizzato per unirsi alle due colonne di tipo array nel frame dati Pyspark restituendo i valori in Array1 ma non in Array2.