【发布时间】:2016-09-08 21:54:38
【问题描述】:
我正在研究催化剂优化器的各个阶段,但我对前三个阶段在实践中的工作方式有些怀疑。
在第一阶段(分析阶段),优化器将创建查询的逻辑计划。但是这里的列未解析,因此需要为此使用目录对象。
疑问:你知道这个目录对象是如何工作的,所以请解决这个问题,例如,如果我们对 hive 表执行查询,优化器会连接到 hdfs 中的 hivetable 以解析列?
在第二阶段(逻辑优化),优化器将标准规则应用于逻辑计划,如常量折叠、谓词下推和项目修剪。
疑问:我试图找到示例以更好地了解 spark 在此阶段的真正作用,常量折叠、谓词下推和项目修剪如何帮助优化查询,但我没有找到具体的内容关于这个。
在第三阶段(物理规划),Spark 使用与 Spark 执行引擎匹配的物理运算符,获取逻辑规划并生成一个或多个物理规划。
疑问:这部分“使用与spark执行引擎匹配的物理算子”你理解吗?
【问题讨论】:
标签: sql apache-spark optimization apache-spark-sql