Pyspark array_position & array_repeat

Pyspark array_position & array_repeat
«Dans Python, Pyspark est un module Spark utilisé pour fournir un type de traitement similaire comme Spark en utilisant DataFrame.

Il fournit les méthodes structType () et structField () qui sont utilisées pour définir les colonnes du Pyspark DataFrame.

En utilisant ces méthodes, nous pouvons définir les noms de colonne et les types de données des colonnes particulières."

Discutons-les un par un

StructType ()

Cette méthode est utilisée pour définir la structure du Pyspark DataFrame. Il acceptera une liste de types de données ainsi que des noms de colonne pour le DataFrame donné. Ceci est connu comme le schéma du dataframe. Il stocke une collection de champs

Structfield ()

Cette méthode est utilisée à l'intérieur de la méthode StructType () du Pyspark DataFrame. Il acceptera les noms de colonne avec le type de données.

ArrayType ()

Cette méthode est utilisée pour définir la structure du tableau du Pyspark DataFrame. Il acceptera une liste de types de données. Il stocke une collection de champs. Nous pouvons placer des données de données dans ArrayType ().

Donc, dans cet article, nous devons créer un dataframe avec un tableau. Créons un dataframe avec 2 colonnes. La première colonne est Student_Category qui fait référence au champ entier pour stocker les ID étudiants et la deuxième colonne - Student_full_name est utilisé pour stocker les valeurs de chaîne dans un tableau créé à l'aide d'ArrayType ().

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
# et importent des types de structures et d'autres types de données
de Pyspark.SQL.Types Import StructType, StructField, StringType, IntegerType, FloatType, ArrayType
de Pyspark.SQL.Fonctions Importer Array_Contains
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Envisagez un tableau avec 5 éléments
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#Define le structure et les structures
# pour les données ci-dessus
schéma = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))])
# réintégrer le dataframe et ajouter un schéma au dataframe
df = spark_app.CreateDataFrame (my_array_data, schéma = schéma)
df.montrer()

Sortir:

array_position ()

array_position () est utilisé pour renvoyer la position de la valeur présente dans un tableau dans chaque ligne de la colonne de type tableau. Il prend deux paramètres, le premier paramètre est la colonne de tableau et le deuxième paramètre est la valeur. Il renvoie la position de valeur dans chaque tableau. La position commence par 1.

S'il y a plusieurs valeurs dans le même tableau, il renverra la position de la première valeur.

Syntaxe

array_position (array_column, "valeur")

Paramètres

  1. Array_Column est la colonne de tableau qui a des tableaux avec des valeurs
  2. la valeur est présente dans le tableau.

La fonction array_position () est utilisée avec la méthode select () pour effectuer l'action.

Retour
Si la valeur est présente dans un tableau, elle renverra la position; Sinon, il reviendra 0.

Exemple 1
Dans cet exemple, nous obtiendrons la position de valeur - «K» de la colonne Student_Full_name dans la dataframe de données ci-dessus.

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
# et importent des types de structures et d'autres types de données
de Pyspark.SQL.Types Import StructType, StructField, StringType, IntegerType, FloatType, ArrayType
de Pyspark.SQL.Fonctions Import *
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Envisagez un tableau avec 5 éléments
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#Define le structure et les structures
# pour les données ci-dessus
schéma = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))])
# réintégrer le dataframe et ajouter un schéma au dataframe
df = spark_app.CreateDataFrame (my_array_data, schéma = schéma)
#return la position de valeur - k dans chaque ligne de la colonne Student_full_name
df.SELECT ("Student_full_name", array_position ("Student_full_name", 'K')).montrer()

Sortir

Vous pouvez voir dans la deuxième colonne que les positions de valeurs dans les tableaux dans toutes les lignes ont été renvoyées.

  1. Dans la première rangée, k n'existe pas - donc il est retourné 0
  2. Dans la deuxième ligne, k n'existe pas - donc il est retourné 0
  3. Dans la troisième rangée, K existe à deux positions, 1er et 3e - il ne faut que la première position, donc il retourne 0
  4. Dans la quatrième rangée, k existe en première position - donc il est retourné 1
  5. Dans la cinquième rangée, k n'existe pas - donc il est retourné 0

Exemple 2
Dans cet exemple, nous obtiendrons la position de valeur - «A» de la colonne Student_full_name dans la dataframe de données créée ci-dessus.

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
# et importent des types de structures et d'autres types de données
de Pyspark.SQL.Types Import StructType, StructField, StringType, IntegerType, FloatType, ArrayType
de Pyspark.SQL.Fonctions Import *
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Envisagez un tableau avec 5 éléments
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#Define le structure et les structures
# pour les données ci-dessus
schéma = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))])
# réintégrer le dataframe et ajouter un schéma au dataframe
df = spark_app.CreateDataFrame (my_array_data, schéma = schéma)
#return la position de valeur - A dans chaque ligne de la colonne Student_Full_name
df.SELECT ("Student_full_name", array_position ("Student_full_name", 'a')).montrer()

Sortir

Vous pouvez voir dans la deuxième colonne que les positions de valeurs dans les tableaux dans toutes les lignes ont été renvoyées.

  1. Dans la première rangée, A existe à la première position - donc il est retourné 1
  2. Dans la deuxième rangée, A n'existe pas - donc il est retourné 0
  3. Dans la troisième rangée, A existe en deuxième position - il renvoie 2
  4. Dans la quatrième rangée, A n'existe pas - donc il est retourné 0
  5. Dans la cinquième rangée, A n'existe pas - donc il renvoie 0.

array_repeat ()

array_repeat () est utilisé pour répéter le tableau n fois. En d'autres termes, il reproduira le tableau et remplacera N fois sur toutes les lignes de la colonne de type tableau. Il faut deux paramètres. Le premier paramètre est le nom de la colonne de type de tableau, et le deuxième paramètre prend pour répéter, qui prend une valeur entière qui fait référence au nombre de fois pour répéter le tableau.

Syntaxe

array_repeat (array_column, répéter)

Paramètres

  1. Array_Column est la colonne de tableau qui a des tableaux avec des valeurs
  2. répéter prend une valeur entière pour répéter le tableau dans toutes les lignes

La fonction array_repeat () est utilisée avec la méthode select () pour effectuer l'action.

Retour
Si le retour des tableaux répétés dans le tableau imbriqué.

Exemple 1
Dans cet exemple, nous répéterons le tableau 2 fois dans toutes les lignes de la colonne Student_Full_name à l'aide de Array_repeat () et afficher le DataFrame à l'aide de la méthode Collect.

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
# et importent des types de structures et d'autres types de données
de Pyspark.SQL.Types Import StructType, StructField, StringType, IntegerType, FloatType, ArrayType
de Pyspark.SQL.Fonctions Import *
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Envisagez un tableau avec 5 éléments
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#Define le structure et les structures
# pour les données ci-dessus
schéma = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))])
# réintégrer le dataframe et ajouter un schéma au dataframe
df = spark_app.CreateDataFrame (my_array_data, schéma = schéma)
#Repeat le tableau 2 fois
df.SELECT ("Student_full_name", array_repeat ("Student_full_name", 2)).collecter()

Sortir

[Row (Student_full_name = ['a'], array_repeat (student_full_name, 2) = [['a'], ['a']]),
Row (Student_full_name = ['b', 'l', 'b'], array_repeat (student_full_name, 2) = [['b', 'l', 'b'], ['b', 'l', ' B ']]),
Row (Student_full_name = ['K', 'A', 'K'], Array_repeat (Student_full_name, 2) = [['K', 'A', 'K'], ['K', 'A', ' K ']]),
Row (Student_full_name = ['k'], array_repeat (student_full_name, 2) = [['k'], ['k']]),
Row (student_full_name = ['b', 'p'], array_repeat (student_full_name, 2) = [['b', 'p'], ['b', 'p']])]

Nous pouvons voir que le tableau est répété 2 fois dans toutes les rangées de la colonne Student_Full_name dans un tableau imbriqué,

Exemple 2
Dans cet exemple, nous répéterons le tableau 4 fois dans toutes les lignes de la colonne Student_Full_name à l'aide de Array_Repeat () et afficher le dataframe à l'aide de la méthode Collect.

# importer le module Pyspark
Importer Pyspark
#mport Sparkcession pour la création d'une session
de Pyspark.SQL IMPORT SPARKSESSE
# et importent des types de structures et d'autres types de données
de Pyspark.SQL.Types Import StructType, StructField, StringType, IntegerType, FloatType, ArrayType
de Pyspark.SQL.Fonctions Import *
#create une application nommée Linuxhint
Spark_App = Sparkcession.constructeur.appname ('Linuxhint').getorCreate ()
# Envisagez un tableau avec 5 éléments
my_array_data = [(1, ['a']), (2, ['b', 'l', 'b']), (3, ['k', 'a', 'k']), ( 4, ['k']), (3, ['b', 'p'])]]
#Define le structure et les structures
# pour les données ci-dessus
schéma = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_full_name", ArrayType (StringType ()))])
# réintégrer le dataframe et ajouter un schéma au dataframe
df = spark_app.CreateDataFrame (my_array_data, schéma = schéma)
#Repeat le tableau 4 fois
df.SELECT ("Student_full_name", array_repeat ("Student_full_name", 4)).collecter()

Sortir

[Row (student_full_name = ['a'], array_repeat (student_full_name, 4) = [['a'], ['a'], ['a'], ['a']]),
Row (Student_full_name = ['B', 'L', 'B'], Array_repeat (Student_full_name, 4) = [['B', 'L', 'B'], ['B', 'L', ' B '], [' b ',' l ',' b '], [' b ',' l ',' b ']]),
Row (Student_full_name = ['K', 'A', 'K'], Array_repeat (Student_full_name, 4) = [['K', 'A', 'K'], ['K', 'A', ' K '], [' k ',' a ',' k '], [' k ',' a ',' k ']])),
Row (student_full_name = ['k'], array_repeat (student_full_name, 4) = [['k'], ['k'], ['k'], ['k']]),
Row (Student_full_name = ['b', 'p'], array_repeat (student_full_name, 4) = [['b', 'p'], ['b', 'p'], ['b', 'p' ], ['B', 'p']])]

Nous pouvons voir que le tableau est répété 4 fois dans toutes les lignes de la colonne Student_Full_name dans un tableau imbriqué.

Conclusion

Dans cet article de Pyspark, nous avons vu deux fonctions de tableau différentes. array_position () est utilisé pour renvoyer la position de la valeur spécifiée dans un tableau. Nous avons remarqué qu'il renverrait la première position s'il y avait plusieurs valeurs dans un tableau. Ensuite, nous avons discuté de la méthode array_repeat () qui est utilisée pour dupliquer le tableau n fois sur toutes les lignes. Les tableaux répétés sont stockés dans un tableau imbriqué. Les deux fonctions utilisent la méthode select () pour faire la fonctionnalité.