Тренування створення 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 '', ____())