Hive UDF,Java 原语和 null
Hive UDFs, Java Primitives and null
在 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;
}
}
我们可以仅使用基元数据类型创建 UDF,并在 sql Case 语句
中检查空值
即
select
CASE WHEN columnName = null then null
else evaluate(columnName) end columnName
From tabelName
注意:评估是 UDF 名称。
在 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;
}
}
我们可以仅使用基元数据类型创建 UDF,并在 sql Case 语句
中检查空值即
select
CASE WHEN columnName = null then null
else evaluate(columnName) end columnName
From tabelName
注意:评估是 UDF 名称。