НачатьНачать бесплатно

Практика создания 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()

Вам необходимо выполнить две задачи:

  1. Убедитесь, что преобразованные данные состоят из непустых векторов.
  2. Датафрейм содержит столбец с массивами строк, где каждый массив включает один элемент. Необходимо преобразовать этот столбец в строку.

Это упражнение является частью курса

Введение в 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 '', ____())
Редактировать и запускать код