ПочатиПочніть безкоштовно

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