Hive UDF,Java Primitives和null

时间:2017-11-06 09:50:30

标签: java hive user-defined-functions

在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;
      }
} 

1 个答案:

答案 0 :(得分:1)

我们可以仅使用基元数据类型创建UDF,并在sql Case Statement

中检查空值

select 
      CASE WHEN columnName = null then null 
               else evaluate(columnName) end columnName
 From tabelName

注意:评估是UDF名称。