[Spark] Spark LogicalPlan 逆向生成SQL语句

在使用spark进行sql分析过程中,一般是将sql语句解析成LogicalPlan查看执行计划,LogicalPlan能够帮助我们了解Spark-SQL的解析,转换,优化,映射和执行的机制。最近在看Spark-SQL源码过程中,了解到一个逆向逻辑,即将LogicalPlan逆向生成SQL语句。代码实现在org.apache.spark.sql.catalyst.SQLBuilder中。

  • 《[Spark] Spark LogicalPlan 逆向生成SQL语句》 image.png

如果手上有一个logicalPlan,通过创建SQLBuilder实例,调用toSQL方法就可以进行逆向转化。

值得注意的是,并不是所有的logicalPlan通过转化后生成的sql都可以进行二次执行,SQLBuilder仅仅满足了一些简单的转化逻辑,如果想实现复杂的sql生成逻辑,要改造源码。目前只解决了子查询不匹配的问题,可用于sql转换后的二次执行。

    原文作者:PowerMe
    原文地址: https://www.jianshu.com/p/6201111a99ed
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞