Я создал следующий класс Java и добавил его в Hive после создания из него банку
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class MakeCap extends UDF{
private Text t;
public Text evaluate(Text input){
if(null==input){
t.set("Invalid input");
}else{
t.set(input.toString().toUpperCase());
}
return t;
}
}
Затем я создал временную функцию
CREATE TEMPORARY FUNCTION CAP AS 'com.iris.MakeCap';
Но когда я запускаю
SELECT CAP('hello');
Я получаю следующую ошибку
Error: Error while compiling statement: FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments ''hello'': org.apache.hadoop.hive.ql.metadata.HiveException:
Unable to execute method public org.apache.hadoop.io.Text com.iris.MakeCap.evaluate(org.apache.hadoop.io.Text)
with arguments {hello}:null (state=42000,code=10014)
Я пытался использовать String
вместо Text
в качестве типа аргумента для evaluate()
, но получил тот же результат.Тогда я также попробовал это
SELECT CAP(e.name) FROM default.emp e;
и получил ту же ошибку.Может ли кто-нибудь помочь мне с этим?