提问者:小点点

SparkSQL在intelliJ思想编译时没有SparkSqlParser.scala文件


我已经在我的Red Hat 64中安装了spark hadoop env。我还想在intelliJ idea的spark源代码项目中读写代码。我已经下载了spark源代码并做好了一切准备。但我在IntelliJ idea中编译spark项目时出现了一些错误。以下是错误:

/home/xuch/IdeaProjects/spark/sql/catalyst/src/main/scala/org/apache/spark/sql/CatalystQI。斯卡拉

错误:(809,34)未找到:值SparkSqlParser case ast if ast。标记类型==SparlSqlParser。TinyintLiteral公司=

错误:(812,34)未找到:值SparkSqlParser case ast if ast。标记类型==SparlSqlParser。SmallintLiteral=

... ...

但实际上我没有找到一个名为SparkSqlParser的文件。scala在整个项目中都不是一个名为SparkSqlParser的scala类。

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

>

https://apache.googlesource.com/spark//c152dde78f73d5ce3a483fd60a47e7de1f1916da/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SparkSQLParser。斯卡拉


共3个答案

匿名用户

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

  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. 导航到视图-

希望它能帮助你。

匿名用户

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

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

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

导航到“清理”-

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

匿名用户

1) 首先使用中给出的构建说明从命令行构建Sparkhttp://spark.apache.org/docs/latest/building-spark.html#building-使用buildmvn

2) 然后检查$SPARK\u 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