Description
We need to add an optimizer to pig. This will enable us to do some traditional optimizations, such as filter and projection pushing, join order and execution choices, etc. It will also enable optimizations specific to map/reduce (such as using the combiner).
The optimizer will need to operate at various levels, including the logical, physical, and possibly map/reduce plan levels.