Практика создания UDF
Иногда данные требуют преобразования, которое не поддерживается встроенными функциями. В таких случаях удобно использовать пользовательскую функцию ("UDF").
SQL-функция udf доступна.
Доступен датафрейм df2 типа DataFrame[doc: array<string>, in: array<string>, out: array<string>]. Его столбец doc содержит простые токены.
Следующий код отображает первые 20 строк df2, в которых doc содержит '1':
df2.where(array_contains('doc','1')).show()
Вам необходимо выполнить две задачи:
- Убедитесь, что преобразованные данные состоят из непустых векторов.
- Датафрейм содержит столбец с массивами строк, где каждый массив включает один элемент. Необходимо преобразовать этот столбец в строку.
Это упражнение является частью курса
Введение в Spark SQL на Python
Инструкции к упражнению
- Создайте UDF, которая возвращает
trueтогда и только тогда, когда значение является непустым вектором, используяnumNonzeros(). - Создайте UDF, которая возвращает первый элемент массива в виде строки.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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 '', ____())