Spark SQL----CREATE FUNCTION

Spark SQL----CREATE FUNCTION

一、描述

CREATE FUNCTION语句用于在Spark中创建临时或永久函数。临时函数的作用域位于会话级别,永久函数在持久目录中创建,并可用于所有会话。USING子句中指定的资源在第一次执行时可供所有执行器使用。除了SQL接口之外,spark还允许用户使用Scala、Python和Java API创建自定义的用户定义scalar和聚合函数。有关更多信息,请参阅Scalar UDFsUDAFs

二、语法

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

三、参数

  • OR REPLACE
    如果指定,则会重新加载函数的资源。这主要用于获取对函数实现所做的任何更改。此参数与IF NOT EXISTS互斥,不能一起指定。
  • TEMPORARY
    指示正在创建的函数的范围。当指定了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 } , … }

四、例子

-- 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 test;
+---------------------+
|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.
-- Please note that the temporary function does not have a qualified
-- database 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 test;
+---------------------+
|function_return_value|
+---------------------+
|                   21|
|                   22|
+---------------------+

相关推荐

  1. SparkSql Join Types详解

    2024-07-13 11:56:04       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 11:56:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 11:56:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 11:56:04       58 阅读
  4. Python语言-面向对象

    2024-07-13 11:56:04       69 阅读

热门阅读

  1. 有免代码开发平台,还需要学习软件工程吗?

    2024-07-13 11:56:04       22 阅读
  2. 建立共享linux第三方软件仓库

    2024-07-13 11:56:04       19 阅读
  3. mysql自动kill卡事务进程

    2024-07-13 11:56:04       22 阅读
  4. 计算机网络高频面试题

    2024-07-13 11:56:04       26 阅读
  5. 如何将已有的docker服务迁移至Kubernetes集群中

    2024-07-13 11:56:04       22 阅读
  6. 【Go系列】 函数与方法

    2024-07-13 11:56:04       21 阅读
  7. Mysql索引、执行计划、体系架构

    2024-07-13 11:56:04       26 阅读
  8. php计算两张照片的相似度,范围:0-100

    2024-07-13 11:56:04       25 阅读
  9. 打工人如何应对AI对工作岗位的风险

    2024-07-13 11:56:04       25 阅读
  10. AM243-IPC

    AM243-IPC

    2024-07-13 11:56:04      23 阅读