#apache-spark #apache-spark-sql #user-defined-functions #databricks
Вопрос:
В документации я вижу упоминание о пользовательских функциях: https://spark.apache.org/docs/latest/sql-ref-functions-udf-scalar.html
Но это показывает примеры Java и Scala.
Я говорю о коде Spark SQL, подобном приведенному ниже. Можно ли для этого определить и использовать UDFS?
%sql
CREATE TABLE bla USING PARQUET AS
SELECT *
FROM jaja.haha AS haha
Я не понимаю, почему в руководстве говорится о ссылке на SQL, а затем переходит к показу кода, отличного от SQL.
Комментарии:
1. Afaik вы определяете и регистрируете их для каждой кодировки (java, scala, ..) и вызываете их с помощью Spark SQL, но вы не определяете их с помощью Spark SQL.
Ответ №1:
Начиная с Databricks Runtime 9.0, можно определить скалярную определяемую пользователем функцию, используя синтаксис только для SQL (пример из примечаний к выпуску):
CREATE FUNCTION square(x DOUBLE) RETURNS DOUBLE RETURN x * x;
Обратитесь к документации для синтаксиса и других примеров.
Ответ №2:
Вы можете сделать это с помощью CREATE FUNCTION
.
CREATE [ OR REPLACE ] [ TEMPORARY ] FUNCTION [ IF NOT EXISTS ]
function_name AS class_name [ resource_locations ]
Прочитайте статью databricks здесь.
Комментарии:
1. это не определяет функцию SQL — вам все равно нужен скомпилированный код