我的代码是:
import org.apache.spark.SparkContext
它可以在交互模式下运行,但是当我使用scalac进行编译时,我收到以下错误消息:
object apache不是包org的成员
这似乎是路径的问题,但我不确切知道如何配置路径。
答案 0 :(得分:18)
您需要指定编译Scala代码时使用的库的路径。这通常不是手动完成的,而是使用Maven或sbt等构建工具。您可以在http://spark.apache.org/docs/1.2.0/quick-start.html#self-contained-applications
找到最小的sbt设置答案 1 :(得分:4)
我遇到了这个问题,因为我的火花依赖性范围错误。这是错误:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
<scope>test</scope> <!-- will not be available during compile phase -->
</dependency>
这会起作用,并且不会在你的uberjar中加入火花,这是你几乎肯定想要的:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
<scope>provided</scope>
</dependency>
答案 2 :(得分:1)
一种简单的方法(如果使用的是Play框架)是在Maven Repository中查找LibraryDependacy
,选择版本choose SBT,然后将其添加到底部project/build.sbt
文件中的文件,如下所示:
// https://mvnrepository.com/artifact/org.apache.spark/spark-core
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.2"
然后,您需要在sbt控制台中输入reload
,然后输入compile
。如果您来自pip
或js
,但Maven Repo是您的朋友,这可能会有点陌生。
答案 3 :(得分:0)
我遇到了同样的问题,请确保您位于根目录中。
答案 4 :(得分:0)
我在sbt interactive
会话中遇到了这个问题。
通过在会话中简单执行reload
解决了问题。
希望这会有所帮助!
答案 5 :(得分:0)
在spark框架上运行scala wordcount程序时,我遇到了同样的问题。 我使用eclipse作为IDE,使用maven作为构建工具。 我只是从“测试”->“提供”中删除了POM文件中spark框架的工作范围,如下所示。有效。 提供