说我有这样的过滤条款:
filtered = FILTER rel BY cond1 AND cond2;
假设cond1
消除了rel
的10%,cond2
消除了80%。如果我将cond2
放在cond1
之前,我的脚本会看到性能提升吗?我应该完全将它分成两个单独的FILTER
语句吗?或者这个优化是否已经为我做了优化?
答案 0 :(得分:2)
过滤器优化技术在pig文档中有明确说明,您可以从以下链接查看"FilterLogicExpressionSimplifier"
和"SplitFilter"
。
http://pig.apache.org/docs/r0.13.0/perf.html#optimization-rules
答案 1 :(得分:1)
大多数pig作业都由IO(磁盘和网络)控制,而filter子句需要查看rel
中的所有记录以应用谓词。因此,我认为通过切换订单,您不会看到任何显着的性能提升。