Что такое определяемые пользователем функции (UDF)?
Определяемая пользователем функция (UDF) — это функция, определяемая пользователем, которая позволяет повторно использовать пользовательскую логику в пользовательской среде. Azure Databricks поддерживает множество различных типов определяемых пользователем функций, что позволяет распределять расширяемую логику. В этой статье представлены некоторые из общих сильных и ограниченных возможностей определяемых пользователем функций.
Не все формы определяемых пользователем функций доступны во всех средах выполнения в Azure Databricks. Если вы работаете с каталогом Unity, см . раздел Пользовательские функции (UDF) в каталоге Unity.
Дополнительные сведения об определяемых пользователем функциях см. в следующих статьях:
- Определяемые пользователем функции (UDF) в каталоге Unity
- Пользовательские функции Pandas
- Пользовательские скалярные функции — Python
- Определяемые пользователем скалярные функции — Scala
- Определяемые пользователем агрегатные функции — Scala
Определение пользовательской логики без штрафов за сериализацию
Azure Databricks наследует большую часть своих пользовательских функций от Apache Spark, включая ограничения эффективности, связанные со многими типами пользовательских функций. См. раздел Какие определяемые пользователем функции наиболее эффективны?.
Вы можете безопасно модульизировать код, не беспокоясь о потенциальных компромиссах эффективности, связанных с пользовательскими функциями. Для этого необходимо определить логику как ряд встроенных методов Spark с помощью SQL или Spark DataFrames. Например, следующие функции SQL и Python объединяют встроенные методы Spark для определения преобразования единиц в качестве повторно используемых функций:
SQL
CREATE FUNCTION convert_f_to_c(unit STRING, temp DOUBLE) RETURNS DOUBLE RETURN CASE WHEN unit = "F" THEN (temp - 32) * (5/9) ELSE temp END; SELECT convert_f_to_c(unit, temp) AS c_temp FROM tv_temp;
Python
def convertFtoC(unitCol, tempCol): from pyspark.sql.functions import when return when(unitCol == "F", (tempCol - 32) * (5/9)).otherwise(tempCol) from pyspark.sql.functions import col df_query = df.select(convertFtoC(col("unit"), col("temp"))).toDF("c_temp") display(df_query)
Чтобы запустить указанные выше определяемые пользователем функции, можно создать пример данных.
Какие определяемые пользователем функции наиболее эффективны?
Определяемые пользователем функции могут привести к значительным узким местам при обработке кода. Azure Databricks автоматически использует ряд различных оптимизаторов для кода, написанного с использованием синтаксиса Apache Spark, SQL и Delta Lake. Когда пользовательские функции вводят пользовательскую логику, эти оптимизаторы не могут эффективно планировать задачи вокруг этой пользовательской логики. Кроме того, логика, которая выполняется за пределами виртуальной машины Java, имеет дополнительные затраты на сериализацию данных.
Azure Databricks оптимизирует многие функции с помощью Photon, если вы используете вычисления с поддержкой Photon. Photon может оптимизировать только функции, которые объединяют команды Spark SQL кадра данных.
Некоторые определяемые пользователем функции более эффективны, чем другие. С точки зрения производительности:
- Встроенные функции будут выполняться быстрее всего благодаря оптимизаторам Azure Databricks.
- Код, выполняемый в виртуальной машине Java (Scala, Java, Определяемые пользователем функции Hive), будет работать быстрее, чем пользовательские функции Python.
- Определяемые пользователем функции Pandas используют arrow для снижения затрат на сериализацию, связанных с пользовательскими функциями Python.
- Определяемые пользователем функции Python хорошо работают с процедурной логикой, но их следует избегать для рабочих нагрузок ETL в рабочих нагрузках больших наборов данных.
В Databricks Runtime 13.1 и более новых версиях определяемые пользователем функции Python и UDAF (определяемые пользователем агрегатные функции) не поддерживаются в каталоге Unity в кластерах, использующих режим общего доступа. Эти пользовательские функции поддерживаются в Databricks Runtime 13.2 и более поздних версий для всех режимов доступа.
В Databricks Runtime 13.2 и более поздних версиях можно зарегистрировать скалярные пользовательские функции Python в каталоге Unity с помощью синтаксиса SQL. См . раздел Пользовательские функции (UDF) в каталоге Unity.
Тип | Оптимизированные | Среда выполнения |
---|---|---|
Определяемая пользователем функция Hive | Нет | JVM |
Определяемая пользователем функция Python | Нет | Python |
Определяемая пользователем функция Pandas | Нет | Python (стрелка) |
Определяемая пользователем функция Scala | Нет | JVM |
Spark SQL | Да | JVM (Photon) |
Кадр данных Spark | Да | JVM (Photon) |
Когда следует использовать определяемую пользователем функцию?
Основное преимущество определяемых пользователем функций заключается в том, что они позволяют пользователям выражать логику на знакомых языках, уменьшая затраты на человека, связанные с рефакторингом кода. Для нерегламентированных запросов, ручной очистки данных, исследовательского анализа данных и большинства операций с небольшими или средними наборами данных затраты на задержку, связанные с пользовательскими функциями, вряд ли перевешивают затраты, связанные с рефакторингом кода.
Для заданий ETL, потоковых операций, операций с очень большими наборами данных или других рабочих нагрузок, которые выполняются регулярно или непрерывно, логика рефакторинга для использования собственных методов Apache Spark быстро платит дивиденды.
Пример данных, например определяемых пользователем функций
В примерах кода в этой статье используются определяемые пользователем функции для преобразования температуры между Celcius и Farenheit. Если вы хотите выполнить эти функции, можно создать пример набора данных со следующим кодом Python:
import numpy as np import pandas as pd Fdf = pd.DataFrame(np.random.normal(55, 25, 10000000), columns=["temp"]) Fdf["unit"] = "F" Cdf = pd.DataFrame(np.random.normal(10, 10, 10000000), columns=["temp"]) Cdf["unit"] = "C" df = spark.createDataFrame(pd.concat([Fdf, Cdf]).sample(frac=1)) df.cache().count() df.createOrReplaceTempView("tv_temp")
Формат файла UDF – описание, как открыть?
Файлы формата UDF открываются специальными программами. Существует 2 типа форматов UDF, каждый из которых открывается разными программами. Чтобы открыть нужный тип формата, изучите описания файлов и скачайте одну из предложенных программ.
Чем открыть файл в формате UDF
Файлы с расширением UDF классифицируются по двум основным категориям:
- UDF файл, представляющий собой образ оптического диска формата CDR или же CDRW, и предназначенный для хранения записей в виде набора файлов. Отличительная особенность данного формата – это доступность управления файлами даже после их записи: имеется возможность редактирования и даже удаления данных с дискового пространства.
Разработчиком UDF стандарта является управляющая компания Optical Storage Technology Association.
Характерно, что на практике формат UDF отсутствует. Большинство программных утилит, применяемых для сохранения образа диска, применяют индивидуальное расширение, однако в целях записи применяется именно алгоритм UDF.
- UDF формат, определенный пользователем как файл скрипта, интегрируемый в Visual Basic и включающий элементы Microsoft Excel. Такой UDF файл может быть сгенерирован благодаря пользовательскому меню Excel через команду “Вставка – Объект”.
Программы для открытия UDF
Для воспроизведения файла образа диска UDF на платформе ОС Windows, следует воспользоваться одним из следующих программных плагинов:
Данный формат адаптирован и для работы в ОС Mac с применением утилитSы Roxio Popcorn 4.
UDF скрипт файл Visual Basic может быть воспроизведен исключительно через офисную программу Microsoft Excel 2010.
Если при открытии расширения UDF возникает ошибка, причины могут заключаться в следующем:
- поврежден или инфицирован файл;
- файл не связан с реестром ОС (выбрано некорректное приложение для воспроизведения);
- недостаточно ресурсов устройства или ОС;
- поврежденные или устаревшие драйвера.
Конвертация UDF в другие форматы
Несмотря на то, что расширение UDF не получило широкого распространения среди обычных пользователей, оно может быть транслировано в некоторые другие форматы хранения данных.
Так, например, с помощью плагина MagicISO, доступно преобразование UDF в BIN. Несмотря на то, что конечный файл может несколько отличаться от оригинала (в частности, размещением данных), основная информация должна успешно транслироваться.
С помощью этой же утилиты допускается и обратная трансляция: ISO -> UDF.
Почему именно UDF и в чем его достоинства?
Ввиду того, что данный формат представляет собой больше алгоритм или стандарт, чем исполнительный файл, востребован он бывает крайне редко. Однако, следует отметить, что он играет первоочередную роль при формировании образа оптического диска и управления его данными.
Тип файла: Excel User Defined Function Разработчик: Microsoft Категория: Исполняемые файлы
Опредленный пользователем сценарий, написанный или записанный в Visual Basic, который выполняет функции в Microsoft Excel. Может создаваться при выборе опции “Module” в меню Insert программы Excel.
Чем открыть файл в формате UDF (Excel User Defined Function)
Файл UDF (что это такое и как его открыть)
Файл NEF представляет собой файл изображения Nikon Raw. Узнайте, как открыть файл .NEF или преобразовать файл NEF в другой формат файла, например JPG, DNG, PNG, PDF и т. Д.
Файл AZW (что это такое и как его открыть)
Файл AZW является файлом формата Kindle eBook Format. Узнайте, как открыть .AZW-файл или преобразовать AZW-файл в другой формат.
Файл ODS (что это такое и как его открыть)
Файл ODS, скорее всего, является файлом OpenDocument Spreadsheet. Вот как открыть файл ODS или преобразовать файл ODS в XLS, PDF, XLSX, CSV, DOC и т. Д.
При подготовке материала использовались источники:
https://learn.microsoft.com/ru-ru/azure/databricks/udf/
https://www.azfiles.ru/extension/udf.html
https://ru.go-travels.com/15734-udf-file-2622842-4773991