在《Spark SQL内核剖析》书中4.3章节,谈到Catalyst体系中生成的抽象语法树的节点都是以Context来结尾,在ANLTR4以及生成的SqlBaseParser解析SQL生成,其源码部分就是语法解析,其生成的抽象语法树的节点都是ParserRuleContext的子类。
提出问题ANLTR4解析SQL生成抽象语法树,最终这颗树长成什么样子,如何查看?
源码分析 测试示例spark.sql("select id, count(name) from student group by id").show()