Exersează crearea unui UDF
Uneori datele tale au nevoie de o transformare care nu este suportată de funcțiile integrate. Aici intervine o funcție definită de utilizator ("UDF").
Funcția SQL udf este disponibilă.
Este disponibil un DataFrame df2 de tipul DataFrame[doc: array<string>, in: array<string>, out: array<string>]. Coloana doc conține tokeni simpli.
Următoarea instrucțiune afișează primele 20 de rânduri din df2 în care doc conține '1':
df2.where(array_contains('doc','1')).show()
Ai două obiective de îndeplinit:
- Asigură-te că datele transformate constau în vectori nevizi.
- Un DataFrame are o coloană ce conține array-uri de șiruri de caractere, fiecare array având un singur element. Dorești să transformi această coloană într-un șir de caractere.
Acest exercițiu face parte din cursul
Introducere în Spark SQL în Python
Instrucțiuni pentru exercițiu
- Creează un UDF care returnează
truedacă și numai dacă valoarea este un vector nevid, folosindnumNonzeros(). - Creează un UDF care returnează primul element al array-ului și îi returnează reprezentarea ca șir de caractere.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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 '', ____())