E. CaprioloらのProgramming Hiveの168ページに、「... Javaプリミティブはオブジェクトではなく、nullにはなりません」と記載されています。だから、簡単なハイブUDF用:ハイブUDF、Javaプリミティブ、ヌル
public class ConvertToCelcius extends UDF {
public double evaluate(double value) {
return (value - 32)/1.8;
}
}
ヌル列値が検出された場合に何が起こりますか?
また、Javaプリミティブを使用して、nullがUDFに渡されるかどうかをテストする方法はありますか?
おそらく、我々は、上記のように書き換えることができます:私たちは、プリミティブデータとUDFを作成することができます
public class ConvertToCelcius extends UDF {
public Double evaluate(Double value) {
if (value == null) {
return null;
}
return (value - 32)/1.8;
}
}
"*ヌルの行の値が見つかった場合はどうなりますか?*" =>コンパイルエラー - これを行うことはできません。あなたが 'Double'を渡さない限り、あなたはNPEを得るでしょう。 – assylias
コンパイルエラーまたはランタイムエラー?上記の "double"コードは正常にコンパイルされます。 – user25029
私が言っていることは、最初のメソッドで 'evaluate(null)'を呼び出すことができないということです:コンパイルエラーです。また、実行時に 'Double d = null'を渡すと、NullPointerExceptionが発生します。 – assylias