LoslegenKostenlos loslegen

UDF erstellen üben

Manchmal braucht deine Daten­transformation 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:

  1. Stelle sicher, dass die transformierten Daten aus nichtleeren Vektoren bestehen.
  2. 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

Einführung in Spark SQL mit Python

Kurs anzeigen

Anleitung zur Übung

  • 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 Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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 '', ____())
Code bearbeiten und ausführen