Spark SQL表达式解析器-Scala Parser与Antlr4
版权声明:本文为博主原创文章,未经博主允许不得转载。
手动码字不易,请大家尊重劳动成果,谢谢
Spark SQL之所以能支持如此强大的表达式系统,是因为其包含了一套字符串解析并生成表达式树的模块。
Scala Parser
在Spark 2.0之前,Spark SQL使用Scala Parser功能去解析SQL表达式,其解析类为org.apache.spark.sql.catalyst.SqlParser
。
对于没用使用过Scala Parser的人来讲,这个类基本上就可以称为天书了。其中用到的几个基本符号:
~ 连接符,并将左右侧匹配结果保留
~> 连接符,仅保留右侧匹配结果,左侧将丢弃
<~ 连接符,仅保留左侧匹配结果,右侧将丢弃。该连接符优先级低于 ~ 和 ~>
^^ 其左侧为词法表达式,右侧为一个函数
例如:p1 ~ p2 ^^ { case a ~ b => a + b }
这个表达式可以把p1和p2匹配出的结果分别赋值给a和b,
注意:此