TGViewer
Data Science | Machinelearning [ru] Data Science | Machinelearning [ru] @devsp · 19.8K subscribers
Post #5111 2.19K
Обзор UDTF в PySpark: зачем нужны табличные функции

PySpark 3.5 привнёс интересную новинку — UDTF (User-Defined Table Function). Если UDF возвращает одно значение, а UDAF агрегирует сразу несколько строк, то UDTF работает прямо в секции FROM и может вернуть целую таблицу строк для одного входного значения. Это открывает сценарии, которые раньше приходилось изобретать через обходные пути.

Что умеет UDTF? У вас есть текстовое поле, и вы хотите превратить каждое слово в отдельную строку. С UDF так не получится, он вернёт только одно значение. А UDTF легко «разворачивает» данные: одна входная строка превращается в десятки выходных. Таким образом можно:

• Разбивать текст на слова, списки на элементы
• Рраспаковывать коллекции или делать cartesian-развёртки
• Получать более гибкие трансформации без громоздкого кода

Как это выглядит? UDTF оформляется как Python-класс с методом eval, где можно yield-ить столько строк, сколько нужно. Например, разбиение строки на слова превращается в лаконичный цикл for word in text.split(): yield (word,). Результат в Spark будет выглядеть как таблица, где каждое слово — отдельная строка.

Другой пример — генерация чисел и их квадратов. Обычный цикл for num in range(start, end): yield (num, num*num) вернёт сразу множество строк. Всё прозрачно: одна запись на входе — много записей на выходе.

Зачем это в продакшене? Главное преимущество UDTF — гибкость. В задачах анализа данных часто нужно «развернуть» структуру: например, массив тегов превратить в таблицу или подсчитать все комбинации значений. Раньше такие приёмы были неудобными, теперь они встроены в PySpark.


UDTF — это 20% кода и 80% удобства. Теперь можно писать генераторы как в Python и получать готовые таблицы в Spark 💳

Data Science
  • ❤ 5
  • ⚡ 1
More from @devsp
  1. Oct 2, 2026Вайбкодим «Полный путь разработки AI-агентов: от MCP до Agentic RAG» Образовательная прогр…
  2. Oct 2, 2026🤣 Правильно расставленные приоритеты в моей жизни би лайк: 💥 xCode Journal
  3. Oct 1, 2026🤯 Люди взбунтовались против «пыточной для ИИ» На GitHub заметили открытый проект AI Tortu…
  4. Oct 1, 2026День в Заонежье начинается ещё в дороге. Мы встретим вас в аэропорту или на вокзале. Дальш…
  5. Sep 30, 2026Две ИИ-фабрики в Армении: что там отгрохали и на кого это в итоге пашет В августе в Раздан…
  6. Sep 30, 2026Из Москвы в Миннеаполис — с тремя решениями для улучшения персонализации в рекомендательны…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →