ÎncepețiÎncepe gratuit

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:

  1. Asigură-te că datele transformate constau în vectori nevizi.
  2. 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

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează un UDF care returnează true dacă și numai dacă valoarea este un vector nevid, folosind numNonzeros().
  • 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 '', ____())
Editează și rulează codul