Practicar la creación de una UDF
A veces tus datos necesitan una transformación que no está cubierta por las funciones integradas. Ahí es donde resulta útil una función definida por el usuario ("UDF").
La función SQL udf está disponible.
Hay un dataframe df2 disponible, de tipo DataFrame[doc: array<string>, in: array<string>, out: array<string>]. Su columna doc contiene tokens triviales.
Lo siguiente muestra las primeras 20 filas de df2 donde doc contiene '1':
df2.where(array_contains('doc','1')).show()
Tienes dos objetivos que cumplir:
- Asegúrate de que los datos transformados sean vectores no vacíos.
- Un dataframe tiene una columna que contiene arrays de cadenas, donde cada array tiene un único elemento. Te gustaría transformar esta columna a una cadena.
Este ejercicio forma parte del curso
Introducción a Spark SQL en Python
Instrucciones del ejercicio
- Crea una udf que devuelva verdadero si y solo si el valor es un vector no vacío, usando
numNonzeros(). - Crea una udf que devuelva el primer elemento del array y retorne su representación en cadena.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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 '', ____())