Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :
Databricks Runtime
Crée une fonction externe temporaire ou permanente. Les fonctions temporaires sont étendues au niveau de la session, tandis que les fonctions permanentes sont créées dans le catalogue persistant et mises à la disposition de toutes les sessions.
Les ressources spécifiées dans la clause USING sont mises à la disposition de tous les exécutants lorsqu'ils sont exécutés pour la première fois.
En plus de l'interface SQL, Spark vous permet de créer des fonctions scalaires et agrégées personnalisées définies par l'utilisateur à l'aide des API Scala, Python et Java. Consulter Fonctions scalaires définies par l’utilisateur externe (UDF) et Fonctions d’agrégation définies par l’utilisateur (UDAF) pour plus d'informations.
Note
Les fonctions externes ne peuvent pas être créées dans le catalogue Unity.
Syntaxe
CREATE [ OR REPLACE ] [ TEMPORARY ] FUNCTION [ IF NOT EXISTS ]
function_name AS class_name [ resource_locations ]
Paramètres
OU REMPLACER
Si cette fonction est spécifiée, les ressources de la fonction sont rechargées. Cela est surtout utile pour récupérer les modifications apportées à l’implémentation de la fonction. Ce paramètre est mutuellement exclusif à
IF NOT EXISTSet ils ne peuvent être spécifiés ensemble.TEMPORARY
Indique l’étendue de la fonction en cours de création. Lorsque vous spécifiez
TEMPORARY, la fonction créée est valide et visible dans la session active. Aucune entrée persistante n’est transmise dans le catalogue pour ces types de fonctions.SI N'EXISTE PAS
S’il est spécifié, crée la fonction uniquement lorsqu’elle n’existe pas. La création de la fonction réussit (aucune erreur n'est signalée) si la fonction spécifiée existe déjà dans le système. Ce paramètre est mutuellement exclusif à
OR REPLACEet ils ne peuvent être spécifiés ensemble.-
Nom de la fonction. Le nom de la fonction peut facultativement être qualifié avec un nom de schéma.
Les fonctions créées dans
hive_metastorepeuvent uniquement contenir des caractères ASCII alphanumériques et des traits de soulignement. class_name
Nom de la classe qui fournit l’implémentation pour la fonction à créer. La classe d’implémentation doit étendre l’une des classes de base comme suit :
- Doit étendre
UDFouUDAFdans le packageorg.apache.hadoop.hive.ql.exec. - Doit étendre
AbstractGenericUDAFResolver,GenericUDF, ouGenericUDTFdans le packageorg.apache.hadoop.hive.ql.udf.generic. - Doit étendre
UserDefinedAggregateFunctiondans le packageorg.apache.spark.sql.expressions.
- Doit étendre
resource_locations
Liste des ressources qui contiennent l’implémentation de la fonction, ainsi que ses dépendances.
Syntaxe :
USING { { (JAR | FILE | ARCHIVE) resource_uri } , ... }
Exemples
-- 1. Create a simple UDF `SimpleUdf` that increments the supplied integral value by 10.
-- import org.apache.hadoop.hive.ql.exec.UDF;
-- public class SimpleUdf extends UDF {
-- public int evaluate(int value) {
-- return value + 10;
-- }
-- }
-- 2. Compile and place it in a JAR file called `SimpleUdf.jar` in /tmp.
-- Create a table called `test` and insert two rows.
> CREATE TABLE test(c1 INT);
> INSERT INTO test VALUES (1), (2);
-- Create a permanent function called `simple_udf`.
> CREATE FUNCTION simple_udf AS 'SimpleUdf'
USING JAR '/tmp/SimpleUdf.jar';
-- Verify that the function is in the registry.
> SHOW USER FUNCTIONS;
function
------------------
default.simple_udf
-- Invoke the function. Every selected value should be incremented by 10.
> SELECT simple_udf(c1) AS function_return_value FROM t1;
function_return_value
---------------------
11
12
-- Created a temporary function.
> CREATE TEMPORARY FUNCTION simple_temp_udf AS 'SimpleUdf'
USING JAR '/tmp/SimpleUdf.jar';
-- Verify that the newly created temporary function is in the registry.
-- The temporary function does not have a qualified
-- schema associated with it.
> SHOW USER FUNCTIONS;
function
------------------
default.simple_udf
simple_temp_udf
-- 1. Modify `SimpleUdf`'s implementation to add supplied integral value by 20.
-- import org.apache.hadoop.hive.ql.exec.UDF;
-- public class SimpleUdfR extends UDF {
-- public int evaluate(int value) {
-- return value + 20;
-- }
-- }
-- 2. Compile and place it in a jar file called `SimpleUdfR.jar` in /tmp.
-- Replace the implementation of `simple_udf`
> CREATE OR REPLACE FUNCTION simple_udf AS 'SimpleUdfR'
USING JAR '/tmp/SimpleUdfR.jar';
-- Invoke the function. Every selected value should be incremented by 20.
> SELECT simple_udf(c1) AS function_return_value FROM t1;
function_return_value
---------------------
21
22
Articles connexes
-
(SQL et Python) - SHOW FUNCTIONS
- DESCRIBE FUNCTION
- DROP FUNCTION