Что делает оптимизатор в архитектуре Apache Pig? - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в Apache Pig и пытаюсь понять его архитектуру.

Ссылка указана - https://www.tutorialspoint.com/apache_pig/apache_pig_architecture.htm

Может кто-нибудь объяснить, какова роль Оптимизатора в архитектуре Apache Pig?

Там написано:

Направленный ациклический граф, сгенерированный парсером, передается логическому оптимизатору, который выполняет логические оптимизации, такие как проекция и опускание.

Мне неясно, что означают projection и pushdown.

1 Ответ

0 голосов
/ 15 ноября 2018

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)

...