Pyspark array_position & array_repeat

Pyspark array_position & array_repeat
“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 2 colonne. La prima colonna è Student_Category che si riferisce al campo intero per archiviare ID Student e 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:

array_position ()

array_position () viene utilizzato per restituire la posizione del valore presente in un array in ogni riga della colonna del tipo di array. Ci vogliono due parametri, il primo parametro è la colonna array e il secondo parametro è il valore. Restituisce la posizione del valore in ciascun array. La posizione inizia con 1.

Se ci sono più valori nello stesso array, restituirà la posizione del primo valore.

Sintassi

Array_Position (Array_Column, "Value")

Parametri

  1. array_column è la colonna array che ha array con valori
  2. Il valore è presente nell'array.

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

Ritorno
Se il valore è presente in un array, restituirà la posizione; Altrimenti, tornerà 0.

Esempio 1
In questo esempio, otterremo la posizione di valore - "k" dalla colonna Student_Full_name nel frame dati creato sopra.

#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)
#return la posizione di valore - k in ogni riga della colonna Student_Full_name
df.Select ("Student_full_name", Array_Position ("Student_full_name", 'K')).spettacolo()

Produzione

Puoi vedere nella seconda colonna che sono stati restituiti le posizioni dei valori negli array in tutte le righe.

  1. Nella prima riga, K non esiste - quindi ha restituito 0
  2. Nella seconda riga, K non esiste - quindi è tornato 0
  3. Nella terza fila, K esiste in due posizioni, 1 ° e 3 ° - impiega solo la prima posizione, quindi restituisce 0
  4. Nella quarta riga, K esiste nella prima posizione - quindi è tornato 1
  5. In quinta riga, K non esiste - quindi è tornato 0

Esempio 2
In questo esempio, otterremo la posizione di valore - "A" dalla colonna Student_Full_name nel frame dati creato sopra.

#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)
#Trenturn La posizione del valore - a in ogni riga della colonna Student_Full_name
df.Select ("Student_full_name", array_position ("Student_full_name", 'A')).spettacolo()

Produzione

Puoi vedere nella seconda colonna che sono stati restituiti le posizioni dei valori negli array in tutte le righe.

  1. Nella prima riga, esiste in prima posizione - quindi ha restituito 1
  2. Nella seconda riga, a non esiste - quindi è tornato 0
  3. Nella terza fila, esiste nella seconda posizione, quindi restituisce 2
  4. Nella quarta riga, A non esiste - quindi è tornato 0
  5. Nella quinta riga, a non esiste - quindi restituisce 0.

array_repeat ()

array_repeat () viene utilizzato per ripetere l'array n volte. In altre parole, duplicherà l'array e sostituirà N volte in tutte le righe nella colonna del tipo di array. Ci vogliono due parametri. Il primo parametro è il nome della colonna del tipo di array e il secondo parametro prende per ripetere, il che prende un valore intero che si riferisce al numero di volte per ripetere l'array.

Sintassi

array_repeat (array_column, ripeti)

Parametri

  1. array_column è la colonna array che ha array con valori
  2. Ripeti prende un valore intero per ripetere l'array in tutte le righe

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

Ritorno
Se restituire array ripetuti nell'array nidificato.

Esempio 1
In questo esempio, ripeteremo l'array 2 volte in tutte le righe della colonna studente.

#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)
#Repeat l'array 2 volte
df.Select ("Student_full_name", Array_Repeat ("Student_full_name", 2)).raccogliere()

Produzione

[Riga (studente_full_name = ['a'], array_repeat (studente_full_name, 2) = [['a'], ['a']]),
Riga (studente_full_name = ['b', 'l', 'b'], array_repeat (studente_full_name, 2) = [['b', 'l', 'b'], [b ',' l ',' B']]),
Riga (Student_full_name = ['k', 'a', 'k'], array_repeat (Student_full_name, 2) = [['k', 'a', 'k'], [k ',' a ',' K']]),
Riga (studente_full_name = ['k'], array_repeat (studente_full_name, 2) = [['k'], ['k']]),
Riga (studente_full_name = ['b', 'p'], array_repeat (studente_full_name, 2) = [['b', 'p'], ['b', 'p']]]]

Possiamo vedere che l'array viene ripetuto 2 volte in tutte le file della colonna Student_Full_name in un array nidificato,

Esempio 2
In questo esempio, ripeteremo l'array 4 volte in tutte le righe della colonna Student_Full_name usando Array_Repeat () e visualizzerebbe il Frame Data usando il metodo di raccolta.

#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)
#Repeat l'array 4 volte
df.Select ("Student_full_name", array_repeat ("Student_full_name", 4)).raccogliere()

Produzione

[Riga (studente_full_name = ['a'], array_repeat (studente_full_name, 4) = [['a'], ['a'], ['a'], ['a']]),
Riga (studente_full_name = ['b', 'l', 'b'], array_repeat (studente_full_name, 4) = [['b', 'l', 'b'], [b ',' l ',' B '], [' b ',' l ',' b '], [' b ',' l ',' b ']]),
Riga (studente_full_name = ['k', 'a', 'k'], array_repeat (studente_full_name, 4) = [['k', 'a', 'k'], [k ',' a ',' K '], [' k ',' a ',' k '], [' k ',' a ',' k ']]),
Riga (studente_full_name = ['k'], array_repeat (studente_full_name, 4) = [['k'], ['k'], ['k'], ['k']]),
Riga (studente_full_name = ['b', 'p'], array_repeat (studente_full_name, 4) = [['b', 'p'], ['b', 'p'], ['b', 'p' ], ['B', 'p']]]

Possiamo vedere che l'array si ripete 4 volte in tutte le file della colonna Student_Full_name in un array nidificato.

Conclusione

In questo articolo di Pyspark, abbiamo visto due diverse funzioni di array. array_position () viene utilizzato per restituire la posizione del valore specificato in un array. Abbiamo notato che avrebbe restituito la prima posizione se ci fossero più valori in un array. Successivamente, abbiamo discusso del metodo Array_Repeat () che viene utilizzato per duplicare l'array n volte in tutte le righe. Le matrici ripetute sono conservate in un array nidificato. Entrambe le funzioni utilizzano il metodo Select () per eseguire la funzionalità.