Pyspark explose et explose_outer

Pyspark explose et explose_outer
Dans Python, Pyspark est un module Spark utilisé pour fournir un type de traitement similaire comme Spark en utilisant DataFrame. Il fournit le StructType () et Structfield () Méthodes qui sont utilisées pour définir les colonnes dans le Pyspark DataFrame.

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

StructType ()

Cette méthode est utilisée pour définir la structure du cadre de données Pyspark. 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 du StructType () Méthode 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 à l'intérieur ArrayType (). 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 identifiants étudiants. La deuxième colonne - Student_full_name est utilisée pour stocker les valeurs de chaîne dans un tableau créé en utilisant 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:

exploser()

Maintenant, nous verrons quoi exploser() fait. exploser() retournera chaque valeur individuelle d'un tableau. Si le tableau est vide ou nul, il ignorera et passera au tableau suivant dans une colonne de type tableau dans Pyspark Data. Ceci est possible en utilisant le sélectionner() méthode. À l'intérieur de cette méthode, nous pouvons utiliser le array_min () fonction et renvoyer le résultat.

Syntaxe:

trame de données.sélectionnez (exploser (array_column))

Paramètres:
- Array_Column: contient des valeurs de type de tableau
Retour:
- Il renverra toutes les valeurs dans un tableau dans toutes les lignes dans une colonne de type de tableau dans un pyspark dataframe.

Exemple 1:

Dans cet exemple, nous retournerons toutes les valeurs dans un tableau de la colonne Student_full_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']), (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)
# Appliquer d'explosion sur la colonne Student_full_name
df.SELECT ("Student_full_name", Expllode ('Student_full_name')).montrer()

Sortir:

Nous pouvons voir que dans la 2ème colonne, chaque valeur du tableau de chaque ligne est renvoyée.

Maintenant, voyons quoi si les valeurs du tableau sont vides.

Exemple 2:

Ce dataframe n'a aucune valeur dans le tableau.

# 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, []), (2, []), (3, []), (4, []), (3, [])]
#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)
# exploser la colonne Student_full_name
df.SELECT ("Student_full_name", Expllode ('Student_full_name')).montrer()

Sortir:

Il ne renvoie rien car toutes les valeurs manquent dans la colonne du tableau - Student_full_name.

Expllode_outer ()

Maintenant, nous verrons quoi Expllode_outer () fait. Expllode_outer () retournera chaque valeur individuelle d'un tableau. Si le tableau est vide ou nu. Ceci est possible en utilisant le sélectionner() méthode. À l'intérieur de cette méthode, nous pouvons utiliser le array_min () fonction et renvoyer le résultat.

Syntaxe:

trame de données.select (explose_outer (array_column)))

Paramètres:
- Array_Column: contient des valeurs de type de tableau

Retour:
- Il renverra toutes les valeurs dans un tableau dans toutes les lignes dans une colonne de type de tableau dans un pyspark dataframe.

La différence entre exploser() et Expllode_outer () est-ce, exploser() ne renverra rien quand il n'y a pas de valeurs dans le tableau. Mais Expllode_outer () retourner null lorsqu'il n'y a pas de valeurs dans le tableau.

Exemple 1:

Dans cet exemple, nous retournerons toutes les valeurs dans un tableau de la colonne Student_full_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']), (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)
# Appliquer Expllode_outer sur la colonne Student_Full_name
df.SELECT ("Student_full_name", Expllode_outer ('Student_full_name'))).montrer()

Sortir:

Maintenant, voyons quoi si les valeurs du tableau sont vides.

Exemple 2:

Ce dataframe n'a aucune valeur dans le tableau.

# 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, []), (2, []), (3, []), (4, []), (3, [])]
#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)
# Appliquer Expllode_outer la colonne Student_Full_name
df.SELECT ("Student_full_name", Expllode_outer ('Student_full_name'))).montrer()

Sortir:

Il renvoie Null dans toutes les lignes car toutes les valeurs manquent dans la colonne du tableau - Student_full_name.

Conclusion

Dans cet article, nous avons discuté exploser() et Expllode_outer () appliqué sur la colonne de type tableau dans le dataframe avec deux exemples différents. exploser() et Expllode_outer () effectuera une certaine action lorsque toutes les valeurs du tableau ne sont pas nulles. Si une valeur dans un tableau est nul, exploser() Ignorera cette valeur nul. Mais Expllode_outer () considérera et renvoie la valeur nulle partout où la valeur nul est présente dans le tableau.