Eclipse Scala IDE和ApacheSpark--在构建路径中可以找到不同的Scala库版本

Eclipse Scala IDE和ApacheSpark--在构建路径中可以找到不同的Scala库版本,eclipse,scala,apache-spark,Eclipse,Scala,Apache Spark,我有一些主要的对象: import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ object Main { def main(args: Array[String]) { val sc = new SparkContext( new SparkConf().setMaster("loc


我有一些主要的
对象

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._

object Main {

  def main(args: Array[String]) {
        val sc = new SparkContext(
              new SparkConf().setMaster("local").setAppName("FakeProjectName")
        )
  }
}

…然后我将
spark-assembly-1.3.0-hadoop2.4.0.jar


添加到Eclipse中的构建路径中 项目>属性…>Java构建路径:



…此警告出现在Eclipse控制台中:

More than one scala library found in the build path
(C:/Program Files/Eclipse/Indigo 3.7.2/configuration/org.eclipse.osgi/bundles/246/1/.cp/lib/scala-library.jar,
C:/spark/lib/spark-assembly-1.3.0-hadoop2.4.0.jar).
This is not an optimal configuration, try to limit to one Scala library in the build path.
FakeProjectName Unknown Scala Classpath Problem
The version of scala library found in the build path is different from the one provided by scala IDE:
2.10.4. Expected: 2.10.2. Make sure you know what you are doing.
FakeProjectName Unknown Scala Classpath Problem

然后我从构建路径中删除
Scala库[2.10.2]
,它仍然可以工作。除此之外,此警告显示在Eclipse控制台中:

More than one scala library found in the build path
(C:/Program Files/Eclipse/Indigo 3.7.2/configuration/org.eclipse.osgi/bundles/246/1/.cp/lib/scala-library.jar,
C:/spark/lib/spark-assembly-1.3.0-hadoop2.4.0.jar).
This is not an optimal configuration, try to limit to one Scala library in the build path.
FakeProjectName Unknown Scala Classpath Problem
The version of scala library found in the build path is different from the one provided by scala IDE:
2.10.4. Expected: 2.10.2. Make sure you know what you are doing.
FakeProjectName Unknown Scala Classpath Problem

这不是问题吗?不管怎样,我该如何修复它?

这通常不是问题,特别是当版本差异很小时,但无法保证

问题是(如警告中所述),您的项目在类路径上有两个Scala库。一个明确配置为项目的一部分;这是2.10.2版,随Scala IDE插件一起提供。另一个版本为2.10.4,包含在Spark jar中

解决此问题的一种方法是安装2.10.4附带的不同版本的Scala IDE。但这并不理想。如本文所述,Scala IDE要求每个项目使用相同的库版本:

更好的解决方案是通过替换您正在使用的Spark jar来清理类路径。您拥有的是一个程序集jar,这意味着它包含生成它的构建中使用的每个依赖项。如果您使用的是sbt或Maven,那么您可以删除程序集jar,只需添加Spark 1.3.0和Hadoop 2.4.0作为项目的依赖项。在构建过程中,所有其他依赖项都将被拉入。如果您还没有使用sbt或Maven,那么也许可以给sbt一个机会——用几个库依赖项设置build.sbt文件非常容易,而且sbt对指定要使用的库版本有一定程度的支持

最简单的解决方案:

在Eclipse中: 1.项目/(righclick)属性 2.转到Scala编译器 3.单击“使用项目设置” 4.将Scala安装设置为兼容版本。一般固定Scala安装2.XX.X(内置)
5.重建项目

有两种类型的Spark JAR文件(只需查看名称):

您应该通过“添加外部JAR”在构建路径中包含“核心”类型 (您需要的版本)因为Scala IDE已经为您推送了一个Scala

或者,您可以利用SBT并添加以下内容 依赖关系(同样,请注意您需要的版本):

libraryDependencies+=“org.apache.spark”%”spark-core_2.11“%”2.1.0

然后,您不应该在构建路径中“强制”包含任何spark JAR

快乐火花:

扎尔

>