带有 Scala 插件、Maven 和 Spark 的 Eclipse 项目
Posted
技术标签:
【中文标题】带有 Scala 插件、Maven 和 Spark 的 Eclipse 项目【英文标题】:Eclipse Project with Scala Plugin, Maven and Spark 【发布时间】:2014-12-27 13:13:03 【问题描述】:我有 Eclipse Kepler,我已经安装了 Maven 和 Scala 插件。我创建一个新的 Maven 项目并添加依赖项
groupId: org.apache.spark artifactId:spark-core_2.10 版本:1.1.0
根据http://spark.apache.org/downloads.html 的当前文档,一切都很好,Scala 2.10 的 jar 也添加到了项目中。然后我将“Scala Nature”添加到项目中,这添加了 Scala 2.11,最终出现以下错误
在构建路径中找到多个 scala 库 (C:/Eclipse/eclipse-jee-kepler-SR2-win32-x86_64/plugins/org.scala-lang.scala-library_2.11.2.v20140721-095018-73fb460c1c .jar,C:/Users/fff/.m2/repository/org/scala-lang/scala-library/2.10.4/scala-library-2.10.4.jar)。 至少有一个版本不兼容。 请更新项目构建路径,使其仅包含兼容的 scala 库。
是否可以同时使用 Spark(来自 Maven)和 Scala IDE 插件?有关如何解决此问题的任何想法?
感谢您的帮助。问候
【问题讨论】:
【参考方案1】:简而言之,是的,这是可能的。
Spark 当前使用的是 Scala 2.10,最新的 Scala IDE 是针对 2.10 和 2.11“交叉发布”的。您需要选择基于2.10的版本,即3.0.3。
但是,处于候选发布模式的下一个主要版本 4.0 具有多版本支持。您可以创建一个 Scala 项目并选择您想要使用的 Scala 版本(2.10 或 2.11)。如果您愿意,可以尝试一下。
【讨论】:
谢谢,成功了。我为该项目选择了 Scala 2.10,一切正常。亲切的问候【参考方案2】:如果有人在搜索相同的东西时偶然发现:
我最近创建了 Maven 原型,用于使用 Scala 2.10.4 项目引导新的 Spark 1.3.0。 请按照此处的说明进行操作: https://github.com/spark-in-action/scala-archetype-sparkinaction
对于 IntelliJ IDEA,首先从命令行生成项目,然后导入 IDE。
【讨论】:
【参考方案3】:您已经安装了 Scala Ide 插件,但只有在您的项目中包含 Scala 类时,项目的 Scala 特性才有用。 然而,Spark 和 Scala 可以一起工作。确保您使用兼容的版本。你可以在你的电脑上install scala,然后使用兼容的spark maven依赖。
【讨论】:
【参考方案4】:是的,你可以..使用我在下面提供的 pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.spark-scala</groupId>
<artifactId>spark-scala</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>$project.artifactId</name>
<description>Spark in Scala</description>
<inceptionYear>2010</inceptionYear>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<encoding>UTF-8</encoding>
<scala.tools.version>2.10</scala.tools.version>
<!-- Put the Scala version of the cluster -->
<scala.version>2.10.4</scala.version>
</properties>
<!-- repository to add org.apache.spark -->
<repositories>
<repository>
<id>cloudera-repo-releases</id>
<url>https://repository.cloudera.com/artifactory/repo/</url>
</repository>
</repositories>
<build>
<sourceDirectory>src/main/scala</sourceDirectory>
<testSourceDirectory>src/test/scala</testSourceDirectory>
<plugins>
<plugin>
<!-- see http://davidb.github.com/scala-maven-plugin -->
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.13</version>
<configuration>
<useFile>false</useFile>
<disableXmlReport>true</disableXmlReport>
<includes>
<include>**/*Test.*</include>
<include>**/*Suite.*</include>
</includes>
</configuration>
</plugin>
<!-- "package" command plugin -->
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
</project>
【讨论】:
【参考方案5】:Spark JAR 文件有 2 种类型(只看名称):
名称中包含“程序集”而不是“核心”(内部包含 Scala)
名称包含单词“core”而不是“assembly”(内部没有 Scala)。
您应该通过“添加外部 Jar”(您需要的版本)在您的构建路径中包含“核心”类型,因为 Scala IDE 已经为您提供了一个 Scala。
或者,您可以利用 SBT 并添加以下依赖项(同样,请注意您需要的版本):
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.1.0"
那么您不应该在构建路径中“强制”包含任何 spark JAR。
快乐的火花:
扎尔
>
【讨论】:
以上是关于带有 Scala 插件、Maven 和 Spark 的 Eclipse 项目的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA开发Spark的Maven项目Scala语言