处理 NULL 值

UDx 必须准备好处理 NULL 值。这些值通常必须与正则值分开进行处理。

读取 NULL 值

UDx 将从 BlockReader 类或 PartitionReader 类的实例读取数据。如果列的值为 NULL,则用来获取数据的方法(例如 getLong)将返回 Java null 引用。如果您在未检查 NULL 的情况下尝试使用该值,Java 运行时将抛出空指针异常。

您可以在读取列之前使用特定于数据类型的方法(例如,isLongNullisDoubleNullisBooleanNull)测试 null 值。例如,要测试 UDx 输入的第一列的 INTEGER 数据类型是否为 NULL,请使用以下语句:

// See if the Long value in column 0 is a NULL
if (inputReader.isLongNull(0)) {
    // value is null
    . . .

写入 NULL 值

可以使用特定于类型的方法(例如 setLongNullsetStringNull)在 BlockWriter 类和 PartitionWriter 类上输出 NULL 值。这些方法使用列号来接收 NULL 值。此外,PartitionWriter 类具有特定于数据类型的设置值方法(例如 setLongValuesetStringValue)。如果向这些方法传递某个值,这些方法会将输出列设置为该值。如果向这些方法传递 Java null 引用,这些方法会将输出列设置为 NULL。