CREATE FÜGGVÉNY (külső)

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet 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 ).

Syntax

CREATE [ OR REPLACE ] [ TEMPORARY ] FUNCTION [ IF NOT EXISTS ]
    function_name AS class_name [ resource_locations ]

Paraméterek

  • VAGY CSERE

    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 paramétert, IF NOT EXISTS és nem adható meg 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 paramétert, OR REPLACE és nem adható meg együtt.

  • function_name

    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:

    • Ki kell terjesztenie UDF vagy UDAF csomagban kell lennie org.apache.hadoop.hive.ql.exec .
    • Meg kell hosszabbítani AbstractGenericUDAFResolver, GenericUDFvagy GenericUDTF csomagban org.apache.hadoop.hive.ql.udf.generic .
    • Csomagban kell kiterjeszteni UserDefinedAggregateFunctionorg.apache.spark.sql.expressions .
  • resource_locations

    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 } , ... }

Példák

-- 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