CommencerCommencer gratuitement

S’entraîner à créer une UDF

Il arrive que vos données nécessitent une transformation non prise en charge par les fonctions intégrées. C’est là qu’une fonction définie par l’utilisateur ("UDF") est adaptée.

La fonction SQL udf est disponible.

Un dataframe df2 est disponible, de type DataFrame[doc: array<string>, in: array<string>, out: array<string>]. Sa colonne doc contient des jetons simples.

Ce qui suit affiche les 20 premières lignes de df2 où doc contient « 1 » :

df2.where(array_contains('doc','1')).show()

Vous avez deux objectifs à atteindre :

  1. Veiller à ce que les données transformées soient des vecteurs non vides.
  2. Un dataframe possède une colonne qui contient des tableaux de chaînes de caractères, où chaque tableau comporte un seul élément. Vous souhaitez transformer cette colonne en une chaîne de caractères.

Cet exercice fait partie du cours

Introduction à Spark SQL en Python

Afficher le cours

Instructions

  • Créez une udf qui renvoie true si et seulement si la valeur est un vecteur non vide, en utilisant numNonzeros().
  • Créez une udf qui renvoie le premier élément du tableau et sa représentation sous forme de chaîne.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Returns true if the value is a nonempty vector
nonempty_udf = udf(lambda x:  
    True if (x and hasattr(x, "toArray") and x.____())
    else False, ____())

# Returns first element of the array as string
s_udf = udf(lambda x: ____(x[0]) if (x and type(x) is list and len(x) > 0)
    else '', ____())
Modifier et exécuter le code