Začněte nyníZačněte zdarma

Procvičování tvorby UDF

Někdy data potřebují transformaci, kterou vestavěné funkce nepodporují. Právě k tomu slouží vlastní uživatelsky definovaná funkce ("UDF").

SQL funkce udf je k dispozici.

Máš k dispozici dataframe df2 typu DataFrame[doc: array<string>, in: array<string>, out: array<string>]. Jeho sloupec doc obsahuje jednoduché tokeny.

Následující kód zobrazí prvních 20 řádků df2, kde doc obsahuje '1':

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

Máš před sebou dva úkoly:

  1. Zajisti, aby transformovaná data obsahovala pouze neprázdné vektory.
  2. Dataframe má sloupec obsahující pole řetězců, kde každé pole má právě jeden prvek. Tento sloupec chceš transformovat na řetězec.

Toto cvičení je součástí kurzu

Úvod do Spark SQL v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř UDF, která vrátí true právě tehdy, když je hodnota neprázdný vektor – použij numNonzeros().
  • Vytvoř UDF, která vrátí první prvek pole jako řetězec.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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 '', ____())
Upravit a spustit kód