我已经在我的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”等属性。 以下是文件链接:
答案 0 :(得分:9)
我遇到了同样的问题。这是我的解决方案:
希望它可以帮到你。
答案 1 :(得分:1)
1)首先使用http://spark.apache.org/docs/latest/building-spark.html#building-with-buildmvn
中给出的构建指令从命令行构建Spark2)然后检查 $ 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
答案 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