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

时间:2016-02-25 02:45:36

标签: 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)未找到:值SparkSqlParser                       如果ast.tokenType == SparlSqlParser.TinyintLiteral =>

     

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

     

......

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

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

5 个答案:

答案 0 :(得分:9)

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

  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->工具Windows-> Maven项目标签。选择项目“Spark Project Catalyst”。右键单击它。然后选择“生成源和更新文件夹”
  3. 之后你可以看到一些文件被添加到“spark-2.0.1 \ sql \ catalyst \ target \ generated-sources \ antlr4”
  4. 然后你可以建立项目的成功。
  5. 希望它可以帮到你。

答案 1 :(得分:1)

1)首先使用http://spark.apache.org/docs/latest/building-spark.html#building-with-buildmvn

中给出的构建指令从命令行构建Spark

2)然后检查 $ SPARK_HOME / sql / catalyst / target / generated-sources / antlr3 / org / apache / spark / sql / catalyst / parser文件夹。

SparkSqlLexer.java等一些生成的类就在那里。

它生成的类列表是

    SparkSqlLexer.java[enter link description here][1]    
    SparkSqlParser.java
    SparkSqlParser_ExpressionParser.java
    SparkSqlParser_FromClauseParser.java
    SparkSqlParser_IdentifiersParser.java
    SparkSqlParser_KeywordParser.java
    SparkSqlParser_SelectClauseParser.java

3)打开模块设置。点击火花催化剂模块。转到右侧的“源”选项卡。将目标/生成源作为源文件夹。 Attaching a pic to give an idea.

答案 2 :(得分:1)

这里没有任何建议对我有用。但是,我注意到,生成的代码依赖于Antlr 3.x,而Antlr 4.x则依赖于依赖项(mvn dependecy:tree)。我不知道为什么会这样。也许是因为我之前已经从命令行(?)构建它。

无论如何,尝试清理Catalyst子项目,然后重建自动生成的源。要在IntelliJ中执行此操作,请转到“查看” - >工具窗口 - > Maven项目。

然后导航到" Spark Project Catalyst"在" Maven项目"标签。

导航至清洁 - >清洁:清洁并双击它。导航到插件 - > antlr4 - > antlr4:antlr4然后双击它。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我已经做过Rishitesh Mishra的介绍并且在第一步陷入困境。执行" build / mvn -Pyarn -Phadoop-2.4 -Dhadoop.version = 2.4.0 -DskipTests clean package"时总是出错。
我已经尝试了https://spark.apache.org的源代码和github上的fork。
我已将日志屏幕截图附加到新答案中,如下所示。
error log image