处理 NULL 值
UDx 必须准备好处理 NULL 值。这些值通常必须与正则值分开进行处理。
读取 NULL 值
UDx 将从 BlockReader
类或 PartitionReader
类的实例读取数据。如果列的值为 NULL,则用来获取数据的方法(例如 getLong
)将返回 Java null
引用。如果您在未检查 NULL 的情况下尝试使用该值,Java 运行时将抛出空指针异常。
您可以在读取列之前使用特定于数据类型的方法(例如,isLongNull
、isDoubleNull
和 isBooleanNull
)测试 null 值。例如,要测试 UDx 输入的第一列的 INTEGER 数据类型是否为 NULL,请使用以下语句:
// See if the Long value in column 0 is a NULL
if (inputReader.isLongNull(0)) {
// value is null
. . .
写入 NULL 值
可以使用特定于类型的方法(例如 setLongNull
和 setStringNull
)在 BlockWriter
类和 PartitionWriter
类上输出 NULL 值。这些方法使用列号来接收 NULL 值。此外,PartitionWriter
类具有特定于数据类型的设置值方法(例如 setLongValue
和 setStringValue
)。如果向这些方法传递某个值,这些方法会将输出列设置为该值。如果向这些方法传递 Java null
引用,这些方法会将输出列设置为 NULL。