我所工作的组织正从过去的传统执行方式转向公共云。我们必须为所有在云端执行的死刑付出代价。为了降低执行成本,我们做了两件事:
我们正在努力避免一切不好的执行。
我们正试图进一步缩短执行时间。
作为一名大数据工程师,我的工作主要依赖于sparksql,我正在努力减少sql查询的执行时间。催化剂在执行时做什么,我想在执行前做。对于读取逻辑计划、优化逻辑计划和生成物理计划等,我还想在catalyst中添加自定义优化计划,这也将在构建时触发。
在行刑前有什么办法可以做这些吗?
我所工作的组织正从过去的传统执行方式转向公共云。我们必须为所有在云端执行的死刑付出代价。为了降低执行成本,我们做了两件事:
我们正在努力避免一切不好的执行。
我们正试图进一步缩短执行时间。
作为一名大数据工程师,我的工作主要依赖于sparksql,我正在努力减少sql查询的执行时间。催化剂在执行时做什么,我想在执行前做。对于读取逻辑计划、优化逻辑计划和生成物理计划等,我还想在catalyst中添加自定义优化计划,这也将在构建时触发。
在行刑前有什么办法可以做这些吗?
1条答案
按热度按时间2q5ifsrm1#
实际上,您可以通过创建dataframe而不执行任何操作来获取查询的执行计划。
假设您有一个Dataframe
df
,您可以访问df.logicalPlan
仔细检查计划。如果您有一些启发式方法来检测错误,这可能会满足您避免错误执行的第一个要求。对于自定义优化,您可以添加自己的优化规则(请参阅https://www.waitingforcode.com/apache-spark-sql/introduction-custom-optimization-apache-spark-sql/read). 这不会在构建时触发,而是在执行时触发(与所有catalyst优化一样)