Hive Udf例外

时间:2016-03-21 10:24:17

标签: hive

我有一个简单的配置单元UDF:

package com.matthewrathbone.example;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;


@Description(
  name="SimpleUDFExample",
  value="returns 'hello x', where x is whatever you give it (STRING)",
  extended="SELECT simpleudfexample('world') from foo limit 1;"
  )
class SimpleUDFExample extends UDF {

  public Text evaluate(Text input) {
    if(input == null) return null;
    return new Text("Hello " + input.toString());
  }
}

当我使用select query执行它时: 从tests3atable limit 10中选择helloUdf(方法); method是tests3atable表中列的名称。

我得到以下异常:     FAILED:SemanticException [错误10014]:第1行:7错误的参数'方法':无法实例化UDF实现类com.matthewrathbone.example.SimpleUDFExample:java.lang.IllegalAccessException:Class org.apache.hadoop。 hive.ql.udf.generic.GenericUDFBridge无法使用修饰符访问com.matthewrathbone.example.SimpleUDFExample类的成员""

2 个答案:

答案 0 :(得分:4)

将该类声明为public,它应该可以工作

答案 1 :(得分:0)

我也有同样的问题。事实证明,eclipse没有刷新我修改过的程序。因此,请确保您在代码中进行的修改会反映在jar中。