Pyspark array_union, array_intersect, & array_except

Pyspark array_union, array_intersect, & array_except
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 3 colonnes. La première colonne est Student_Category qui fait référence au champ entier pour stocker les ID des étudiants et la deuxième colonne - Student_First_name, troisième colonne - Student_last_name est utilisée pour stocker les valeurs de chaîne dans un tableau créé à l'aide de 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 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'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' ' , «A», «k»], [«k», «a», «k»]), (4, [«k»], [«k», «a», «k»]), ( 3, ['b', 'p'], ['a'])]
#Define le structure et les structures
# pour les données ci-dessus
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_First_name", ArrayType (StringType ())), structField ("Student_last_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_union ()

Array_Union () est utilisé pour rejoindre les deux colonnes de type tableau dans le Pyspark DataFrame en renvoyant les valeurs des deux colonnes de tableau dans un tableau. Il faut deux colonnes de type tableau comme paramètres.

Il renvoie toutes les valeurs uniques (une seule fois).

Syntaxe

array_union (array_column1, array_column2)

Paramètres

  1. array_column1 est la première colonne de tableau qui a des tableaux avec des valeurs
  2. array_column2 est la deuxième colonne de tableau qui a des tableaux avec des valeurs.

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

Exemple
Dans cet exemple, nous rejoindrons deux colonnes de type de tableau - Student_First_name et Student_last_name

# 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'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' ' , «A», «k»], [«k», «a», «k»]), (4, [«k»], [«k», «a», «k»]), ( 3, ['b', 'p'], ['a'])]
#Define le structure et les structures
# pour les données ci-dessus
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_First_name", ArrayType (StringType ())), structField ("Student_last_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)
#Apply Array_Union sur Student_First_name et Student_last_name
df.SELECT ("Student_First_name", "Student_last_name",
Array_Union ("Student_First_name", "Student_last_name")).montrer()

Sortir

On peut voir ça

  1. Dans la première rangée - [a] union [a]: [a] (retour unique)
  2. Dans la deuxième rangée - [b, l, b] union [a]: [b, l, a]
  3. En troisième rangée - [k, a, k] union [k, a, k]: [k, a] (seuls k et a sont uniques)
  4. Dans la quatrième rangée - [k] union [k, a, k]: [k, a] (seuls k et a sont uniques)
  5. Dans la cinquième rangée - [b, p] union [a]: [b, p, a]

array_INTERSECT ()

array_intersect () est utilisé pour rejoindre les deux colonnes de type de tableau dans le Pyspark DataFrame en renvoyant uniquement les valeurs communes des deux tableaux dans un nouveau tableau. Il faut deux colonnes de type de tableau comme paramètres.

Syntaxe

array_INTERSECT (array_column1, array_column2)

Paramètres

  1. array_column1 est la première colonne de tableau qui a des tableaux avec des valeurs
  2. array_column2 est la deuxième colonne de tableau qui a des tableaux avec des valeurs.

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

Exemple
Dans cet exemple, nous inscrivrons deux colonnes de type de tableau - Student_First_name et Student_last_name

# 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'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' ' , «A», «k»], [«k», «a», «k»]), (4, [«k»], [«k», «a», «k»]), ( 3, ['b', 'p'], ['a'])]
#Define le structure et les structures
# pour les données ci-dessus
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_First_name", ArrayType (StringType ())), structField ("Student_last_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)
#Apply Array_INTERSECT sur Student_First_name et Student_last_name
df.SELECT ("Student_First_name", "Student_last_name",
array_intersect ("Student_First_name", "Student_last_name")).montrer()

Sortir

On peut voir ça

  1. Dans la première ligne - [a] se croiser [a]: [a] (a est commun)
  2. Dans la deuxième rangée - [b, l, b] se croisent [a]: [] (aucun élément n'est commun)
  3. En troisième rangée - [k, a, k] intersect [k, a, k]: [k, a] (k et a sont communs)
  4. Dans la quatrième rangée - [k] se croisent [k, a, k]: [k] (seul k est commun)
  5. Dans la cinquième rangée - [b, p] entrecarne [a]: [] (aucun élément n'est commun)

array_except ()

array_except () est utilisé pour rejoindre les deux colonnes de type de tableau dans le pyspark dataframe en renvoyant des valeurs dans le tableau1 mais pas dans l'arre.

Il renvoie toutes les valeurs uniques (une seule fois).

Syntaxe

array_except (array_column1, array_column2)

Paramètres

  1. array_column1 est la première colonne de tableau qui a des tableaux avec des valeurs
  2. array_column2 est la deuxième colonne de tableau qui a des tableaux avec des valeurs.

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

Exemple
Dans cet exemple, nous effectuerons Array_Except deux colonnes de type de tableau -

  1. Student_last_name et étudiant_first_name
  2. Student_First_name et Student_last_name
# 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'], ['a']), (2, ['b', 'l', 'b'], ['a']), (3, ['k' ' , «A», «k»], [«k», «a», «k»]), (4, [«k»], [«k», «a», «k»]), ( 3, ['b', 'p'], ['a'])]
#Define le structure et les structures
# pour les données ci-dessus
schema = structType ([structField ("Student_Category", IntegerType ()), StructField ("Student_First_name", ArrayType (StringType ())), structField ("Student_last_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)
#Apply Array_Except sur Student_last_name et Student_First_name
df.SELECT ("Student_last_name", "Student_First_name",
array_except ("Student_last_name", "Student_First_name")).montrer()
#Apply Array_Except sur Student_First_name et Student_last_name
df.SELECT ("Student_First_name", "Student_last_name",
array_except ("Student_First_name", "Student_last_name")).montrer()

Sortir

Dans le premier résultat

  1. [A] sauf [a] - [] (puisque A de la colonne1 existe également dans la colonne2)
  2. [A] sauf [b, l, b] - [a] (puisque a de la colonne1 n'existe pas dans la colonne2)
  3. [K, a, k] sauf [k, a, k] - [] (puisque k, a, k de la colonne1 existe également dans la colonne2 également)
  4. [K, a, k] sauf [k] - [a] (puisque a de la colonne1 n'existe pas dans la colonne2)
  5. [A] sauf [b, p] - [a] (puisque a de la colonne1 n'existe pas dans la colonne2)

Dans le deuxième résultat

  1. [A] sauf [a] - [] (puisque A de la colonne1 existe également dans la colonne2)
  2. [B, l, b] sauf [a] - [b, l] (puisque b, l de la colonne1 n'existe pas dans la colonne2)
  3. [K, a, k] sauf [k, a, k] - [] (puisque k, a, k de la colonne1 existe également dans la colonne2 également)
  4. [K] sauf [k, a, k] - [] (puisque k de la colonne1 existe également dans la colonne2)
  5. [B, p] sauf [a] - [b, p] (puisque b, p de la colonne1 n'existe pas dans la colonne2)

Conclusion

Dans ce tutoriel, nous avons vu trois fonctions différentes exécutées sur des colonnes de type tableau dans Pyspark DataFrame. Array_Union () est utilisé pour rejoindre les deux colonnes de type tableau dans le Pyspark DataFrame en renvoyant les valeurs des deux colonnes de tableau dans un tableau. array_intersect () est utilisé pour rejoindre les deux colonnes de type tableau dans le Pyspark DataFrame en renvoyant uniquement des valeurs communes des deux tableaux dans un nouveau tableau. array_except () est utilisé pour rejoindre les deux colonnes de type Array dans le Pyspark DataFrame en renvoyant des valeurs dans Array1 mais pas dans Array2.