Zacznij terazZacznij za darmo

Tworzenie UDF w praktyce

Zdarza się, że dane wymagają przekształcenia, którego nie obsługują wbudowane funkcje. W takich sytuacjach przydaje się własna funkcja zdefiniowana przez użytkownika (UDF, ang. user defined function).

Funkcja SQL udf jest dostępna.

Dostępna jest ramka danych df2 typu DataFrame[doc: array<string>, in: array<string>, out: array<string>]. Jej kolumna doc zawiera podstawowe tokeny.

Poniższy kod wyświetla pierwsze 20 wierszy df2, w których doc zawiera wartość '1':

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

Masz do wykonania dwa zadania:

  1. Zadbaj o to, aby przekształcone dane składały się z niepustych wektorów.
  2. Ramka danych ma kolumnę zawierającą tablice ciągów znaków, przy czym każda tablica zawiera dokładnie jeden element. Chcesz przekształcić tę kolumnę na ciąg znaków.

To ćwiczenie jest częścią kursu

Wprowadzenie do Spark SQL w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz UDF, który zwraca wartość true wtedy i tylko wtedy, gdy wartość jest niepustym wektorem – użyj funkcji numNonzeros().
  • Utwórz UDF, który zwraca pierwszy element tablicy jako ciąg znaków.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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 '', ____())
Edytuj i uruchom kod