SemanticException [错误 10014] Hive UDF

Posted

技术标签:

【中文标题】SemanticException [错误 10014] Hive UDF【英文标题】:SemanticException [Error 10014] Hive UDF 【发布时间】:2018-05-15 12:25:07 【问题描述】:

我在 Eclipse 中使用 apache hive 和 UDF 函数创建。所以当我在我的 sql 查询中调用该函数时,我看到了这个错误:

失败:SemanticException [错误 10014]:第 1:7 行错误的参数“摘要”:没有与(字符串)类 HiveUDF.TokenizeString 匹配的方法。可能的选择:

问题出在哪里?

UDF 类

package HiveUDF;
public class TokenizeString extends UDF 

public List<String> tokenize (Text text) 
    List<String> prova = new ArrayList<String>();
    if(text == null)
        return null;
    String[] words = text.toString().split("\\n");
    for (String w : words)
        prova.add(w);
    return prova;

SQL 表和查询

id                      bigint                                      
productid               string                                      
userid                  string                                      
profilename             string                                      
helpfulnessnumerator    int                                         
helpfulnessdenominator  int                                         
score                   float                                       
time                    int                                         
summary                 string                                      
text                    string

CREATE TEMPORARY FUNCTION tokenize_summary as 'HiveUDF.TokenizeString';

select tokenize_summary(summary) from amazonproduct;

【问题讨论】:

方法必须命名为evaluate 【参考方案1】:

当你扩展 UDF 类时,你必须重写 evaluate(-) 方法。

【讨论】:

您需要提供更多解释来支持您的主张。 基类中没有要覆盖的评估,我们只需要“提供”名为“评估”的方法,因为 hive 将调用此方法——这不是要覆盖任何基本方法。跨度> 【参考方案2】:
package HiveUDF;
public class TokenizeString extends UDF 
public List<String> evaulate (Text text) 
    List<String> prova = new ArrayList<String>();
    if(text == null)
        return null;
    String[] words = text.toString().split("\\n");
    for (String w : words)
        prova.add(w);
    return prova;


试试这个……

【讨论】:

请不要添加其他答案来为您现有的答案添加更多信息。相反,请使用您的第一个答案下方的edit 链接将信息添加到该答案中。请结合您的两个答案,然后删除其中一个。

以上是关于SemanticException [错误 10014] Hive UDF的主要内容,如果未能解决你的问题,请参考以下文章

Hive 给出 SemanticException [错误 10014]:运行我的 UDF 时

编译语句时出错:FAILED:SemanticException [错误 10036]:列名重复:p_id

编译语句时出错:FAILED:SemanticException [错误 10128]:第 4:7 行尚不支持 UDAF 位置

失败:SemanticException 生成 Map Join 任务错误:无法通过异常生成新的 mapJoin 运算符:索引:0,大小:0

Hive:SemanticException [错误10002]:第3:21行无效的列引用'name'

SemanticException 无法获取表