zoukankan      html  css  js  c++  java
  • Spark源码编译cannot resolve symbol SqlBaseParser

    1.Spark编译报错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,双击运行,如下图所示

       运行结果:

    2. 配置source
      打开idea的 file->project structure -> modules -> spark-catalyst-> sources -> target -> generate-sources -> antlr4,将其选为source。如下图所示:

    问题解决。

  • 相关阅读:
    驱动编程:内存管理基本函数
    POOL_TYPE enumeration
    远程服务器下载jenkins上生成的war包,失败原因
    jenkins ssh 报错
    git分组
    免密登录
    jenkins 生成war包后的下载
    redis 连接失败
    nginx+tomcat+https
    jenkins 拉取 git 代码成功版本
  • 原文地址:https://www.cnblogs.com/limaosheng/p/15799506.html
Copyright © 2011-2022 走看看