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

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

  • image.png

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容