腾讯云数据仓库 TCHouse-X CREATE FUNCTION

CREATE FUNCTION 语句用于在 Spark 中创建临时或永久函数。临时函数的作用域在会话级别,而永久函数创建在持久化目录中,可供所有会话使用。USING 子句中指定的资源在首次执行时会提供给所有执行器。除了 SQL 接口外,Spark 还允许用户使用 Scala、Python 和 Java API 创建自定义的标量和聚合函数。

相关产品
腾讯云数据仓库 TCHouse-X 产品页,含版本规格、价格与购买入口。

一、语法

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

二、参数

参数 说明 语法
OR REPLACE 如果指定,将重新加载函数的资源。用于获取对函数实现所做的更改。此参数与 IF NOT EXISTS 互斥,不能同时指定 –
TEMPORARY 指示创建的函数作用域为当前会话级别,会话结束即失效。不会在目录中创建持久条目 –
IF NOT EXISTS 仅在函数不存在时创建;若已存在则跳过且不报错。此参数与 OR REPLACE 互斥 –
function_name 指定要创建的函数名称,可选择性地用数据库名限定 [ database_name. ] function_name
class_name 指定提供函数实现的类名,需扩展以下基类之一:• org.apache.hadoop.hive.ql.exec.UDF / UDAF• org.apache.hadoop.hive.ql.udf.generic.AbstractGenericUDAFResolver / GenericUDF / GenericUDTF• org.apache.spark.sql.expressions.UserDefinedAggregateFunction –
resource_locations 包含函数实现及其依赖项的资源列表 USING { { (JAR | FILE | ARCHIVE) resource_uri } , … }

三、示例

— 创建测试表CREATE EXTERNAL TABLE func_test_table (c1 INT) USING PARQUET LOCATION 'cosn://kevin-1344200066/test_create_function/func_test_table';INSERT INTO func_test_table VALUES (1), (2), (3);– 注册 Python UDF 并使用(通过 Spark API)– spark.udf.register("py_add_ten", udf(lambda x: x + 10, IntegerType()))SELECT py_add_ten(c1) AS result FROM func_test_table;– 创建临时函数CREATE TEMPORARY FUNCTION temp_avg AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage';– 查看函数SHOW USER FUNCTIONS;SHOW FUNCTIONS;– 删除临时函数DROP TEMPORARY FUNCTION IF EXISTS temp_avg;– CREATE OR REPLACECREATE OR REPLACE TEMPORARY FUNCTION temp_avg2 AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDAFAverage';SELECT temp_avg2(c1) FROM func_test_table;

赞 (0)
上一篇 4天前
下一篇 4天前