CREATE FUNCTION (külső)
A következőkre vonatkozik: Databricks Runtime
Ideiglenes vagy állandó külső függvényt hoz létre. Az ideiglenes függvények hatóköre munkamenet szintjén történik, ahol állandó függvények jönnek létre az állandó katalógusban, és minden munkamenet számára elérhetővé válnak.
A záradékban USING
megadott erőforrások az első végrehajtáskor minden végrehajtó számára elérhetővé válnak.
Az SQL-felület mellett a Spark lehetővé teszi egyéni felhasználó által definiált skaláris és összesítő függvények létrehozását Scala, Python és Java API-k használatával. További információkért tekintse meg a külső felhasználó által definiált skaláris függvényeket (UDF-eket) és a felhasználó által definiált összesítő függvényeket (UDAF-eket ).
CREATE [ OR REPLACE ] [ TEMPORARY ] FUNCTION [ IF NOT EXISTS ]
function_name AS class_name [ resource_locations ]
VAGY CSERÉLJE LE
Ha meg van adva, a függvény erőforrásai újratöltődnek. Ez elsősorban a függvény implementálásában végrehajtott módosítások felvételéhez hasznos. Ez a paraméter kölcsönösen kizárja a
IF NOT EXISTS
paramétert, és nem adható meg vele együtt.IDEIGLENES
A létrehozandó függvény hatókörét jelzi. Ha
TEMPORARY
meg van adva, a létrehozott függvény érvényes és látható az aktuális munkamenetben. Ilyen típusú függvényekhez nem történik állandó bejegyzés a katalógusban.HA NEM LÉTEZIK
Ha meg van adva, csak akkor hozza létre a függvényt, ha nem létezik. A függvény létrehozása sikeres (nem történik hiba), ha a megadott függvény már létezik a rendszerben. Ez a paraméter kölcsönösen kizárja a
OR REPLACE
lehetőséget, ezért nem adhatók meg egyszerre.-
A függvény neve. A függvény neve opcionálisan sémanévvel is minősíthető.
A
hive_metastore
létrehozott függvények csak alfanumerikus ASCII-karaktereket és aláhúzásjeleket tartalmazhatnak. class_name
Annak az osztálynak a neve, amely biztosítja a létrehozandó függvény implementációját. A implementálási osztálynak az alábbi módon kell kiterjesztenie az egyik alaposztályt:
- A
org.apache.hadoop.hive.ql.exec
csomagban ki kell terjeszteni aUDF
vagyUDAF
opciót. - Meg kell hosszabbítani a
AbstractGenericUDAFResolver
,GenericUDF
vagyGenericUDTF
elemet aorg.apache.hadoop.hive.ql.udf.generic
csomagban. - Kiterjeszteni kell a
UserDefinedAggregateFunction
elemet aorg.apache.spark.sql.expressions
csomagban.
- A
erőforrás_helyek
A függvény implementálását és függőségeit tartalmazó erőforrások listája.
Szintaxis:
USING { { (JAR | FILE | ARCHIVE) resource_uri } , ... }
-- 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