创建函数(外部)

适用于:检查标记是的砖运行时

创建一个临时或永久的外部函数。临时函数作用域在会话级别而永久的函数中创建目录和所有可用持久会话。中指定的资源使用条款都得到第一次执行时执行人。

除了SQL接口,允许您创建自定义用户定义标量和火花聚合函数使用Scala, Python和Java api。看到用户自定义标量函数(udf)用户定义的聚合函数(UDAFs)为更多的信息。

语法

创建(取代](临时]函数(如果存在]function_name作为class_name(resource_locations]

参数

  • 或替换

    如果指定,函数重载的资源。这主要是有用的去接任何更改的实现功能。这个参数是相互排斥的如果存在一起,不能指定。

  • 临时

    表示函数的范围。当临时指定创建的函数是有效的,可见在当前会话。没有持久的条目的目录的功能。

  • 如果不存在

    如果指定,创建函数只有当它不存在。抛出的创建函数成功(没有错误)如果指定的功能系统中已经存在。这个参数是相互排斥的取代一起,不能指定。

  • function_name

    函数的名称。函数名可以选择合格的模式名。

  • class_name

    类的名称,它提供了创建函数的实现。实现类将扩展的一个基类如下:

    • 应该扩大UDFUDAForg.apache.hadoop.hive.ql.exec包中。

    • 应该扩大AbstractGenericUDAFResolver,GenericUDF,或GenericUDTForg.apache.hadoop.hive.ql.udf.generic包中。

    • 应该扩大UserDefinedAggregateFunctionorg.apache.spark.sql.expressions包中。

  • resource_locations

    的资源列表包含函数的实现及其依赖项。

    语法:使用{{(JAR|文件|存档)resource_uri},}

例子

——1。创建一个简单的UDF SimpleUdf,增量提供的积分值10。——进口org.apache.hadoop.hive.ql.exec.UDF;——公共类SimpleUdf延伸UDF {——公共int评估(int值){——返回值+ 10;- - -}- - -}——2。编译并把它在一个名为“SimpleUdf的JAR文件。jar在/ tmp。——创建一个名为“测试”的表并插入两行。>创建测试(c1INT);>插入测试(1),(2);——创建一个永久的函数称为“simple_udf”。>创建函数simple_udf作为“SimpleUdf”使用JAR“/ tmp / SimpleUdf.jar”;——验证函数是在注册表中。>显示用户功能;函数- - - - - - - - - - - - - - - - - -默认的simple_udf——调用函数。每一个选定的值应该是增加了10。>选择simple_udf(c1)作为function_return_valuet1;function_return_value- - - - - - - - - - - - - - - - - - - - - - - -1112——创建一个临时函数。>创建临时函数simple_temp_udf作为“SimpleUdf”使用JAR“/ tmp / SimpleUdf.jar”;——验证新创建的临时函数是在注册表中。——临时函数没有一个合格的——与之关联的模式。>显示用户功能;函数- - - - - - - - - - - - - - - - - -默认的simple_udfsimple_temp_udf——1。提供修改SimpleUdf”年代实现添加积分值20。——进口org.apache.hadoop.hive.ql.exec.UDF;——公共类SimpleUdfR延伸UDF {——公共int评估(int值){——返回值+ 20;- - -}- - -}——2。编译并把它在一个名为“SimpleUdfR的jar文件。jar在/ tmp。——取代“simple_udf”的实现>创建取代函数simple_udf作为“SimpleUdfR”使用JAR“/ tmp / SimpleUdfR.jar”;——调用函数。每一个选定的值应该是增加了20倍。>选择simple_udf(c1)作为function_return_valuet1;function_return_value- - - - - - - - - - - - - - - - - - - - - - - -2122