UDF erstellen üben
Manchmal braucht deine Datentransformation etwas, das die eingebauten Funktionen nicht unterstützen. Dann ist eine eigene User Defined Function ("UDF") sinnvoll.
Die SQL-Funktion udf steht zur Verfügung.
Ein DataFrame df2 ist verfügbar, vom Typ DataFrame[doc: array<string>, in: array<string>, out: array<string>]. Die Spalte doc enthält triviale Tokens.
Folgendes zeigt die ersten 20 Zeilen von df2, in denen doc die '1' enthält:
df2.where(array_contains('doc','1')).show()
Du hast zwei Ziele zu erfüllen:
- Stelle sicher, dass die transformierten Daten aus nichtleeren Vektoren bestehen.
- Ein DataFrame hat eine Spalte mit Arrays aus Strings, wobei jedes Array genau ein Element enthält. Diese Spalte soll in einen String umgewandelt werden.
Diese Übung ist Teil des Kurses
<Kurs>Einführung in Spark SQL mit Python</Kurs>Übungsanweisungen
- Erstelle eine UDF, die genau dann true zurückgibt, wenn der Wert ein nichtleerer Vektor ist, und verwende dafür
numNonzeros(). - Erstelle eine UDF, die das erste Element des Arrays zurückgibt und dessen String-Darstellung liefert.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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 '', ____())