apache-pig - 优化器在 Apache Pig 架构中做了什么?
问题描述
我是 Apache Pig 的新手,并试图了解它的架构。
链接参考 - https://www.tutorialspoint.com/apache_pig/apache_pig_architecture.htm
谁能解释优化器在 Apache Pig 架构中的作用是什么?
它说:
Parser 生成的有向无环图传递给逻辑优化器,由逻辑优化器进行投影、下推等逻辑优化。
我不清楚是什么projection
意思pushdown
。
解决方案
Pig 进行了许多优化,您可以在此处阅读有关它们的更多信息:https ://pig.apache.org/docs/latest/perf.html#optimization-rules 。让我们更深入地看一下您提到的优化:
下推优化
Pushdown
或者predicate-pushdown
是许多语言中的常见优化,例如 Pig、Hive、Spark、SQL 等。predicate-pushdown
概念的要点(来源:http ://www.dbms2.com/2014/07/15/the-point-of-predicate-下推/):
- 如果您在一个地方发出查询以针对另一个地方的大量数据运行,则可能会产生大量网络流量,这可能会很慢且代价高昂。
- 然而……如果你可以将查询的部分“下推”到数据存储的位置,从而过滤掉大部分数据,那么你可以大大减少网络流量。
在 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 )
推荐阅读
- javascript - React 限制渲染的数量以防止无限循环 - 反应钩子
- google-app-engine - FLASK - 如何使用 app.config ['PORT'] 配置端口?
- python - 有没有办法在给定两组角索引坐标的情况下提取任意多维 Python 数组的实体框切片?
- python - 即使超级用户确实存在,也无法在 django 管理站点中登录管理员
- nginx - 与 dokku 和 hasura 的“上游过早关闭连接”
- python - 披萨店功能中的循环问题
- javascript - 使用 rxjs 进行弹珠测试时如何暂停和恢复虚拟时间?
- c++ - 运行时错误:未定义符号:_ZN11IO_Expander14channel_selectEih
- macos - Quarkus:SRCFG00019:无法从 Converter 构造函数创建新实例
- spring - Spring MVC @getMapping 标头,从应用程序属性中设置值