Kom igångKom igång gratis

Öva på att skapa en UDF

Ibland behöver dina data en transformation som inte stöds av inbyggda funktioner. Då är en egendefinerad funktion ("UDF") ett bra alternativ.

SQL-funktionen udf finns tillgänglig.

En dataram df2 av typen DataFrame[doc: array<string>, in: array<string>, out: array<string>] är tillgänglig. Kolumnen doc innehåller enkla token.

Följande visar de första 20 raderna i df2 där doc innehåller '1':

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

Du har två mål att uppfylla:

  1. Se till att de transformerade data består av icke-tomma vektorer.
  2. En dataram har en kolumn som innehåller strängarrayer, där varje array har ett enda element. Du vill omvandla den här kolumnen till en sträng.

Den här övningen är en del av kursen

Introduktion till Spark SQL i Python

Visa kurs

Övningsinstruktioner

  • Skapa en udf som returnerar true om och endast om värdet är en icke-tom vektor, med hjälp av numNonzeros()
  • Skapa en udf som returnerar det första elementet i arrayen och returnerar dess strängrepresentation.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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 '', ____())
Redigera och kör kod