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:
- Zajisti, aby transformovaná data obsahovala pouze neprázdné vektory.
- 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
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 '', ____())