当前位置: 首页 > 知识库问答 >
问题:

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

尹庆
2023-03-14

我已经在我的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个答案

楚俊逸
2023-03-14

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
皇甫聪
2023-03-14

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

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

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

导航到“清理”-

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

谢昂雄
2023-03-14

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

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

希望它能帮助你。

 类似资料:
  • 昨天我从Eclipse转到IntellijIDEA。 我也在WebSphere Server7中使用JRebel。 难道没有办法让IntelliJ自己做到这一点吗?

  • 问题内容: IDEA具有强大的内置功能-反编译器。它可以很好地工作。我可以复制源代码,但是找不到将所有反编译的Java类提取到Java文件的选项。 这个项目有很多Java类和程序包,所以我将很长时间手动复制它。 有谁知道如何提取到Java源文件。谢谢 问题答案: 要从命令行对jar包使用IntelliJ Java反编译器,请遵循此处提供的说明:https : //github.com/JetBra

  • 如果我使用diretory“C:\development\workspace\java\vertx\hello”中的命令行,并使用命令“vertx run jsverticle.js”,那么一切都正常。如果我从IntelliJ运行应用程序,我会得到一个异常:“部署verticle java.lang.ClassNotFoundException失败:jsVerticle.js”。如果我使用程序参数

  • 我转到设置->错误->序列化问题->没有'serial versionuid'的Serializable类,但它仍然没有显示警告。我的类PKladrBuilding父类实现了接口可序列化。 代码的一部分:

  • 问题内容: 所以我在IntelliJ中有一个Maven模块(模块A)。最近,我将一些类从其中移到了另一个新的Maven模块(模块B)中,并为其添加了依赖项。完成此操作后,我还修改了其中一个移动类(现在位于模块B中)的方法的签名。 我重新导入了poms,以便IntelliJ拾取依赖项更改,并确保受影响的文件的所有Java导入都再次正确。现在,当我尝试运行我的webapp(取决于两个模块)时,在模块A

  • 我正在尝试在完成构建后启动一个项目(