在使用intelliJ构思编译时,Spark SQL没有SparkSqlParser.scala文件

Lyr*_*han 6 scala intellij-idea apache-spark apache-spark-sql

我在我的Red Hat 64中安装了spark-hadoop env.我还想在intelliJ idea中读取和编写spark源代码项目中的代码.我已经下载了火花源代码并准备好了一切.但是在IntelliJ构思中编译spark项目时我遇到了一些错误.这是错误:

/home/xuch/IdeaProjects/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/CatalystQI.scala

错误:(809,34)未找到:如果ast.tokenType == SparlSqlParser.TinyintLiteral =>值SparkSqlParser case ast

错误:(812,34)未找到:如果ast.tokenType == SparlSqlParser.SmallintLiteral =>值SparkSqlParser的情况

......

但实际上我没有在整个项目中找到名为SparkSqlParser.scala的文件,也没有找到名为SparkSqlParser的scala类.

但是,我在网上搜索了一些名为SparkSqlParser.scala的文件,但它们没有"TinyintLiteral","SmallintLiteral"等属性.以下是文件链接:

Wen*_*ang 10

我遇到了同样的问题.这是我的解决方案:

  1. 下载IntelliJ的antlr4(即antlr v4)插件.然后你可以看到IntelliJ IDEA可以识别文件"spark-2.0.1\sql\catalyst\src\main\antlr4\org\apache\spark\sql\catalyst\parser\SqlBase.g4".
  2. 导航到View-> Tool Windows-> Maven Projects选项卡.选择项目"Spark Project Catalyst".右键单击它.然后选择"生成源和更新文件夹"
  3. 之后你可以看到一些文件被添加到"spark-2.0.1\sql\catalyst\target\generated-sources\antlr4"中
  4. 然后,您可以建立项目的成功.

希望它可以帮到你.


小智 5

这里的任何建议都不适合我。但是,我注意到生成的代码依赖于 Antlr 3.x,而 Antlr 4.x 是依赖项 (mvndependecy:tree) 中的内容。我不知道为什么会这样。也许是因为我之前是从命令行 (?) 构建的。

无论如何,尝试清理您的 Catalyst 子项目,然后重建自动生成的源。要在 IntelliJ 中执行此操作,请转到 View -> Tools Window -> Maven Projects。

然后导航到“Maven Project”选项卡中的“Spark Project Catalyst”。

导航到 clean -> clean:clean 并双击它。导航到 Plugins -> antlr4 -> antlr4:antlr4 并双击它。

现在,您将看到 Antlr 类的自动生成源不同,它们应该可以编译。天啊。


Ris*_*hra 0

当我将我的 fork 更新到最新的 master 时,我也遇到了类似的问题。不幸的是,无法从 IDEA 找到使其工作的方法。我所做的是从命令行编译项目。它生成了所需的 antlr 类。然后我添加了 generated-source target/ generated-source/antlr 作为源目录。之后我可以从 Idea 运行测试。理想情况下,Idea 生成源应该已经生成了代码。需要更多检查为什么没有。可能是因为我配置了maven3.3.3。