当前位置: 首页 > 知识库问答 >
问题:

Spark hive udf:没有UDAF分析异常的处理程序

魏宸
2023-03-14

创建了一个项目' spark-udf '

package com.spark.udf
import org.apache.hadoop.hive.ql.exec.UDF

class UpperCase extends UDF with Serializable {
  def evaluate(input: String): String = {
    input.toUpperCase
  }

建造它

spark.sql("CREATE OR REPLACE FUNCTION uppercase AS 'com.spark.udf.UpperCase' USING JAR '/home/swapnil/spark-udf/target/spark-udf-1.0.jar'")

但是下面一行给了我例外:

spark.sql("select uppercase(Car) as NAME from cars").show

例外:

html" target="_blank">线程“main”org.apache.spark.sql中出现异常。AnalysisException:UDAF“com.sark.udf.UpperCase”没有处理程序。请改用sparkSession.udf.register(…)。;第1行位置7,位于org.apache.spark.sql.catalyst.catalog.SessionCatalog.makeFunctionExpression(SessionCatalog.scala:1105),位于org.apache.sark.sql.catelyst.catealog.SessionCatalog$$anonfun$org$apache$spark$sql$catalyst$catalog$1$sessionCatal$$$makeFunctionBuilder$1.apply(Session catalog.scala:1085)org.apache.sark.sql.catalyst.catalog.SessionCatalog$$anonfun$org$apache$spark$sql$catalyst$catalog$SessionCatalog$$makeFunctionBuilder$1.apply(SessionCatalog.sql.catalyst.analysis.SimpleFunctionRegistry.lookupFunction(FunctionRegistry.scala:115),位于org.apache.sark.sql.catalyst.analysis.Analyzer$ResolveFunctions$$anonfun$applyOrElse$6$$annofun$applyOrElse$52.apply(Analyzer.scala:1226),位于org.apacher.sark.ql.catalyst.analysis

对此任何帮助都非常感谢。

共有2个答案

段哲圣
2023-03-14

问题是类需要公开。

package com.spark.udf
import org.apache.hadoop.hive.ql.exec.UDF

public class UpperCase extends UDF with Serializable {
  def evaluate(input: String): String = {
    input.toUpperCase
  }
}
丁翰海
2023-03-14

评论里提到,不如写火花UDF:

val uppercaseUDF = spark.udf.register("uppercase", (s : String) => s.toUpperCase)
spark.sql("select uppercase(Car) as NAME from cars").show

主要原因是您在创建SparkSession期间未设置< code>enableHiveSupport。在这种情况下,将使用默认的SessionCatalog,并且< code>SessionCatalog中的< code > makeFunctionExpression 函数仅扫描用户定义的聚合函数。如果函数不是UDAF,就找不到它。

创建吉拉任务来实现这一点

 类似资料:
  • 前言 在 gRPC 的新版本(1.0.0-pre2)中,为了方便传递 debug 信息,在 StatusException 和 StatusRuntimeException 中增加了名为 Trailer 的 Metadata。 注: 在此之前,Status(和Status映射的StatusException)只有两个字段可以传递信息:1. status code 2. status decript

  • 本文向大家介绍Java异常处理实例分析,包括了Java异常处理实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java异常处理的用法。分享给大家供大家参考。具体分析如下: Java的异常处理机制可以帮助我们避开或者处理程序可能发生的错误,从而使得程序在遇到一些可恢复的错误的时候不会意外终止,而是去处理这些错误,也使得我们在写程序的时候不必写大量的代码来检查错误情况,增强了代码的可读

  • 本文向大家介绍.NET中的异常和异常处理用法分析,包括了.NET中的异常和异常处理用法分析的使用技巧和注意事项,需要的朋友参考一下 本文较为详细的分析了.NET中的异常和异常处理用法。分享给大家供大家参考。具体分析如下: .NET中的异常(Exception) .net中的中异常的父类是Exception,大多数异常一般继承自Exception。 可以通过编写一个继承自Exception的类的方式

  • 本文向大家介绍java中的connection reset 异常处理分析,包括了java中的connection reset 异常处理分析的使用技巧和注意事项,需要的朋友参考一下 在Java中常看见的几个connection rest exception, Broken pipe, Connection reset,Connection reset by peer Socked reset cas

  • 1.1 异常处理的基本使用 try: <语句块1> except: <语句块2> try 捕获异常 except 发生异常时执行 try: <语句块1> except <异常类型名字>: <语句块2> except <异常类型名字> 发生对应异常时才会执行 1.2 异常处理的高级使用 try: <语句块1> except

  • 本文向大家介绍浅析Lua编程中的异常处理,包括了浅析Lua编程中的异常处理的使用技巧和注意事项,需要的朋友参考一下  需要进行错误处理 错误处理是必要的,因为真实世界中的操作通常需要使用复杂的操作,包括文件操作,数据库事务和web服务调用。没人关心错误的业务,涉及保密信息或金钱交易时造成大的损失。 在任何编程,总是有错误处理的要求。错误可以是两种类型,其中包括,     语法错误     运行时错