Pig предлагает множество оптимизаций, и вы можете прочитать о них здесь: https://pig.apache.org/docs/latest/perf.html#optimization-rules. Давайте рассмотрим оптимизацию, о которой вы упомянули, чуть подробнее:
Оптимизация Pushdown
Pushdown
или predicate-pushdown
- это общая оптимизация во многих языках, таких как Pig, Hive, Spark, SQL и т. Д. Суть концепции predicate-pushdown
(источник: http://www.dbms2.com/2014/07/15/the-point-of-predicate-pushdown/):
- Если вы выдадите запрос в одном месте для обработки большого количества данных, находящихся в другом месте, вы можете создать большой сетевой трафик, который может быть медленным и дорогостоящим.
- Однако ...
… Если вы можете «вытолкнуть» части запроса туда, где хранятся данные, и, таким образом, отфильтровать большую часть данных, то вы можете значительно сократить сетевой трафик.
В области Pig, PredicatePushdownOptimizer
, оптимизатор передает соответствующие условия (условия) фильтра загрузчику в качестве подсказки для возможной фильтрации данных как можно раньше в конвейере ETL данных. (Ссылка: https://pig.apache.org/docs/latest/perf.html#optimization-rules#PredicatePushdownOptimizer)
Оптимизация проекции
Projection
или ColumnMapKeyPrune
- это оптимизация, выполненная Pig для сокращения загрузчика только для загрузки необходимых столбцов. Конечно, соответствующий загрузчик должен поддерживать обрезку столбцов. Эта оптимизация также имеет в виду ту же идею, что и оптимизация pushdown
, ограничивая данные на самом раннем этапе в потоке данных ETL. (Ссылка: https://pig.apache.org/docs/latest/perf.html#optimization-rules#ColumnMapKeyPrune)