Spark源码编译报错:cannot resolve symbol SqlBaseParser,如下图所示。

Spark源码编译-cannot resolve symbol SqlBaseParser

 

 

 2.SqlBaseParser缺失原因

Antlr 是一个基于 Java 开发的功能强大的语言识别工具,Antlr 以其简介的语法和高速的运行效率在这类工具中出类拔萃。当你需要开发一种领域语言时,语言可能像 Excel 中的公式一样复杂,也可能像本文中的例子一样简单(只有算术运算),这时你可以考虑使用 Antlr 来处理你的语言。

简单来说,antlr可以理解为你可以自定义语法,然后antlr会自动为你生成api,你就可以使用这些api来解析你的自定义语法了,而spark中的sql解析就是使用了antlr4.

上文中的cannot resolve symbol SqlBaseParser的报错,说的就是找不到antlr4生成的代码。

知道了原因,也就好解决了。

3.解决方案

3.1方案一-使用antlr4生成代码,配置source

  1. 点击右边的maven项目,选择catalyst 模块下的plugins,然后选择antlr4下的antlr4:antlr4,双击运行,如下图所示
    Spark源码编译-cannot resolve symbol SqlBaseParser

     

     运行结果:
    Spark源码编译-cannot resolve symbol SqlBaseParser

     

     

  2. 配置source
    打开idea的 file->project structure -> modules -> spark-catalyst-> sources -> target -> generate-sources -> antlr4,将其选为source。如下图所示:
    Spark源码编译-cannot resolve symbol SqlBaseParser

     

     

问题解决。

 

相关文章:

  • 2021-05-05
  • 2021-05-07
  • 2021-04-10
  • 2021-12-19
  • 2021-04-26
  • 2021-12-08
  • 2021-07-01
  • 2022-01-28
猜你喜欢
  • 2022-12-23
  • 2021-08-13
  • 2021-12-03
  • 2022-01-17
  • 2021-08-27
  • 2021-08-14
  • 2021-11-23
相关资源
相似解决方案