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