Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks Runtime
Membuat fungsi eksternal sementara atau permanen. Fungsi sementara dicakup pada tingkat sesi di mana fungsi permanen dibuat dalam katalog persisten dan tersedia untuk semua sesi.
Sumber daya yang ditentukan dalam klausul USING tersedia untuk semua eksekutor pada saat eksekusi pertama.
Selain antarmuka SQL, Spark memungkinkan Anda membuat fungsi skalar dan agregat yang didefinisikan pengguna secara khusus menggunakan API Scala, Python, dan Java. Lihat Fungsi skalar eksternal yang ditentukan pengguna (UDF) dan Fungsi agregat yang ditentukan pengguna (UDAF) untuk informasi selengkapnya.
Nota
Fungsi eksternal tidak dapat dibuat di Katalog Unity.
Sintaks
CREATE [ OR REPLACE ] [ TEMPORARY ] FUNCTION [ IF NOT EXISTS ]
function_name AS class_name [ resource_locations ]
Parameter-parameternya
ATAU GANTIKAN
Jika ditentukan, sumber daya untuk fungsi dimuat ulang. Ini terutama berguna untuk menyerap perubahan apa pun yang dibuat pada implementasi fungsi. Parameter ini saling eksklusif dengan
IF NOT EXISTSdan tidak dapat ditentukan bersama.SEMENTARA
Menunjukkan cakupan fungsi yang sedang dibuat. Saat Anda menentukan
TEMPORARY, fungsi yang dibuat valid dan terlihat di sesi saat ini. Tidak ada entri persisten yang dibuat dalam katalog untuk fungsi semacam ini.JIKA TIDAK ADA
Jika ditentukan, menciptakan fungsi tersebut hanya jika tidak ada. Pembuatan fungsi berhasil (tidak ada kesalahan yang dilemparkan) jika fungsi yang ditentukan sudah ada dalam sistem. Parameter ini saling eksklusif dengan
OR REPLACEdan tidak dapat ditentukan bersama.-
Nama untuk fungsi. Nama fungsi dapat diberi kualifikasi secara opsional dengan nama skema.
Fungsi yang dibuat di dalam
hive_metastorehanya dapat berisi karakter alfanumerik ASCII dan garis bawah. class_name
Nama kelas yang menyediakan implementasi untuk fungsi yang akan dibuat. Kelas pelaksana harus memperluas salah satu kelas dasar sebagai berikut:
- Harus memperpanjang
UDFatauUDAFdalamorg.apache.hadoop.hive.ql.execpaket. - Harus memperpanjang
AbstractGenericUDAFResolver,GenericUDF, atauGenericUDTFdalam paketorg.apache.hadoop.hive.ql.udf.generic. - Harus memperpanjang
UserDefinedAggregateFunctiondalamorg.apache.spark.sql.expressionspaket.
- Harus memperpanjang
lokasi_sumber_daya
Daftar sumber daya yang berisi implementasi fungsi bersama dengan dependensinya.
Sintaks:
USING { { (JAR | FILE | ARCHIVE) resource_uri } , ... }
Contoh
-- 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