2016-03-21 71 views
2

我有一个简单蜂房UDF:蜂房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()); 
    } 
} 

在我使用选择查询执行它: 从tests3atable极限10选择helloUdf(方法); 方法是tests3atable表中列的名称。

我得到以下例外: FAILED:SemanticException [错误10014]:第1行:7个错误参数 '方法':无法实例UDF实现类com.matthewrathbone.example.SimpleUDFExample:java.lang.IllegalAccessException:类org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge不能访问类com.matthewrathbone.example.SimpleUDFExample的成员使用修改器“”

回答

3

声明类为public,它应该工作

0

我也有同样的问题。事实证明,日食并没有刷新我修改的程序。所以请确保您在代码中所做的修改反映在jar中。