1

我有一个问题,不理解 apache pig(版本 r0.9.2)如何处理空值的否定。我有这样的表达:

nonEmpty = FILTER dataFields BY NOT IsEmpty(children);

如果 children 为 null,IsEmpty 函数将返回 null - 所以让我感到困惑的是 NOT 运算符的行为,因为我会有这样的表达式:

nonEmpty = FILTER dataFields BY NOT NULL;

pig latin r0.9.2 的文档接下来说:“Pig 不支持布尔数据类型。但是,布尔表达式(包括布尔和比较运算符的表达式)的结果始终是布尔类型(真或假)。” 这只会让我完全困惑。

我在这里先向您的帮助表示感谢。

4

1 回答 1

4

无论如何,测试 NULL 是否为空可能不是一个好主意。事实上,我在 0.10.0 上尝试过它,但它确实抛出了一个错误。相反,过滤不为空且不为空:

nonEmpty = FILTER dataFields BY (children IS NOT NULL) AND (NOT IsEmpty(children));
于 2012-09-06T19:55:15.067 回答