在加入之前,pig优化器是否过滤了空值?

时间:2015-08-19 06:51:51

标签: join optimization apache-pig

我对猪的性能文档感到困惑,他们关于在输入中加入空值。 http://pig.apache.org/docs/r0.14.0/perf.html#nulls

正如文档正确指出:"来自A和B的空值不会被收集在一起",因此优化器在加入之前过滤它们是完全合理的:

A1 = filter A by t is not null;
B1 = filter B by x is not null;
C = join A1 by t, B1 by x;

猪优化器会自动执行此操作吗?或者是建议用户每次都记住并做到这一点?如果它不是自动的,是否是一个合理的贡献?

我问的原因是我们遇到了很多性能问题,根本原因就是这样:(

1 个答案:

答案 0 :(得分:1)

以下是检查此问题的其他人的答案......

基于文档:

在连接结果中,你没有任何null被另一个null连接,它会丢弃它,但只是在结尾。

  

“所以null键将被删除。但是直到它们才会被删除   最后一刻。“

因此,为了优化它,您可以在加入之前将其过滤掉(如文档所述)。 所以我认为这不是一个错误,但你说得对,这可以由优化器来完成。