我对猪的性能文档感到困惑,他们关于在输入中加入空值。 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;
猪优化器会自动执行此操作吗?或者是建议用户每次都记住并做到这一点?如果它不是自动的,是否是一个合理的贡献?
我问的原因是我们遇到了很多性能问题,根本原因就是这样:(
答案 0 :(得分:1)
以下是检查此问题的其他人的答案......
基于文档:
在连接结果中,你没有任何null被另一个null连接,它会丢弃它,但只是在结尾。
“所以null键将被删除。但是直到它们才会被删除 最后一刻。“
因此,为了优化它,您可以在加入之前将其过滤掉(如文档所述)。 所以我认为这不是一个错误,但你说得对,这可以由优化器来完成。