在E. Capriolo等人的Programming Hive的第168页上,它指出" ...在Java原语中不是对象,不能为空。"所以,对于简单的Hive UDF:
public class ConvertToCelcius extends UDF {
public double evaluate(double value) {
return (value - 32) / 1.8;
}
}
如果遇到空行值会发生什么?
另外,使用Java原语,我们如何测试是否将null传递给UDF?
据推测,我们可以将上述内容重写为:
public class ConvertToCelcius extends UDF {
public Double evaluate(Double value) {
if (value == null) {
return null;
}
return (value - 32) / 1.8;
}
}
答案 0 :(得分:1)
我们可以仅使用基元数据类型创建UDF,并在sql Case Statement
中检查空值即
select
CASE WHEN columnName = null then null
else evaluate(columnName) end columnName
From tabelName
注意:评估是UDF名称。