我在研究催化剂优化器的各个阶段,但我有些怀疑这三个第一阶段在实践中是如何工作的。催化剂优化阶段
在第一阶段(分析阶段),otimizer将创建查询的逻辑计划。但是这里的列没有解决,所以它需要为此使用一个目录对象。
怀疑:你知道这个目录对象是如何工作的吗?例如,如果我们在hive表上执行查询,优化器连接到hdfs中的hivetables来解析列?
在第二阶段(逻辑优化),otimizer将标准规则应用于逻辑计划,如常量折叠,谓词下推和项目修剪。
怀疑:我试着找例子来更好地理解什么火花确实在这个阶段,不断折叠,谓语pushsdown和项目修剪事情如何帮助优化查询,但林没有找到关于这个没什么混凝土。
在第三阶段(物理计划),spark使用符合Spark执行引擎的物理操作符来计算逻辑计划并生成一个或多个物理计划。
怀疑:您是否理解这部分内容“使用与火花执行引擎匹配的物理操作符”?
谢谢你的回答。我只是怀疑谓词下推,所以它似乎有助于减少整个网络的数据量。所以这只是关于使用where子句,所以我们可以过滤结果,因此整个网络的数据传输量更少? – codin
我会说在一般情况下减少IO。 – zero323