IniziaInizia gratis

Esercitarsi a creare una UDF

A volte i tuoi dati richiedono una trasformazione non supportata dalle funzioni integrate. In questi casi è utile una funzione definita dall'utente ("UDF").

La funzione SQL udf è disponibile.

È disponibile un dataframe df2, di tipo DataFrame[doc: array<string>, in: array<string>, out: array<string>]. La sua colonna doc contiene token banali.

Il seguente comando mostra le prime 20 righe di df2 in cui doc contiene '1':

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

Hai due obiettivi da raggiungere:

  1. Assicurati che i dati trasformati consistano in vettori non vuoti.
  2. Un dataframe ha una colonna che contiene array di stringhe, dove ogni array ha un solo elemento. Vorresti trasformare questa colonna in una stringa.

Questo esercizio fa parte del corso

Introduzione a Spark SQL in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Crea una udf che restituisce true se e solo se il valore è un vettore non vuoto, usando numNonzeros()
  • Crea una udf che restituisce il primo elemento dell'array e ne restituisce la rappresentazione come stringa.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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 '', ____())
Modifica ed esegui il codice