在 IntelliJ IDE 中将 Spark 与 Scala 项目集成时出错

Posted

技术标签:

【中文标题】在 IntelliJ IDE 中将 Spark 与 Scala 项目集成时出错【英文标题】:Error on integrating Spark with Scala project in IntelliJ IDE 【发布时间】:2016-02-28 03:09:30 【问题描述】:

我在 IntelliJ IDE 中创建了一个简单的 SBT 项目,在 build.sbt 中具有以下库依赖项:

import _root_.sbt.Keys._

name := "untitled"

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "1.5.1",
  "org.apache.spark" %% "spark-sql" % "1.5.1" ,
  "org.apache.spark" %% "spark-mllib"  % "1.5.1")

目标是导入 Spark 的 Spark 和 MLLIB,然后按照 here 的说明创建一个 Scala 对象。

但是,导入时出现以下错误:

SBT project import
[warn] Multiple dependencies with the same organization/name but different versions. To avoid conflict, pick one version: [warn] *

org.scala-lang:scala-compiler:(2.11.0, 2.11.7) [警告] * org.apache.commons:commons-lang3:(3.3.2, 3.0) [警告] * jline:jline:(0.9.94, 2.12.1) [警告] * org.scala-lang.modules:scala-parser-combinators_2.11:(1.0.1, 1.0.4) [警告] * org.scala-lang.modules:scala-xml_2.11:(1.0.1, 1.0.4) [警告] * org.slf4j:slf4j-api:(1.7.10, 1.7.2) [警告] [失败] net.sourceforge.f2j#arpack_combined_all;0.1!arpack_combined_all.jar(src): (0ms) [警告] ==== 本地:尝试 [警告] C:\Users\Cezar.ivy2\local\net.sourceforge.f2j\arpack_combined_all\0.1\srcs\arpack_combined_all-sources.jar [警告] ==== 公开:尝试过 [警告] https://repo1.maven.org/maven2/net/sourceforge/f2j/arpack_combined_all/0.1/arpack_combined_all-0.1-sources.jar [警告] [失败] javax.xml.bind#jsr173_api;1.0!jsr173_api.jar(doc): (0ms) [警告] ==== 本地:尝试 [警告] C:\Users\Cezar.ivy2\local\javax.xml.bind\jsr173_api\1.0\docs\jsr173_api-javadoc.jar [警告] ==== 公开:尝试过 [警告] https://repo1.maven.org/maven2/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0-javadoc.jar [警告] [失败] javax.xml.bind#jsr173_api;1.0!jsr173_api.jar(src): (0ms) [警告] ==== 本地:尝试 [警告] C:\Users\Cezar.ivy2\local\javax.xml.bind\jsr173_api\1.0\srcs\jsr173_api-sources.jar [警告] ==== 公开:尝试过 [警告] https://repo1.maven.org/maven2/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0-sources.jar [警告] :::::::::::::::::::::::::::::::::::::::::::::: [警告] :: 失败 下载 :: [警告] :: ^ 详情请参阅解决消息 ^ :: [警告] :::::::::::::::::::::::::::::::::::::::::::::: [警告] :: net.sourceforge.f2j#arpack_combined_all;0.1!arpack_combined_all.jar(src) [警告] :: javax.xml.bind#jsr173_api;1.0!jsr173_api.jar(doc) [警告] :: javax.xml.bind#jsr173_api;1.0!jsr173_api.jar(src) [警告] ::::::::::::::::::::::::::::::::::::::::::::::

【问题讨论】:

检查您的 Spark 安装使用的是哪个 Scala 版本! @eliasah:如何检查?我可以看到“正在运行 Spark 版本 1.5.1”并且我正在使用 Scala 2.11 您是使用预构建版本还是自己构建的? @eliasah:我使用预建版本。 通常预编译版本支持 Scala 2.10。您必须自己构建它。您可以在官方文档中找到该过程。 【参考方案1】:

Spark 不适用于 Scala 2.11。它使用 Scala 2.10,因此您需要使用兼容的 Scala 版本(请参阅http://spark.apache.org/docs/latest/)。

或者,正如@eliasah 在评论中提到的那样,您也可以自己构建 Spark。关于如何构建 Spark 的说明可以在http://spark.apache.org/docs/latest/building-spark.html找到。

【讨论】:

我不同意你的看法。如果您使用正确的构建,Spark 可以与 Scala 2.11 一起使用。 @eliasah 这是根据文档,当然它适用于 OP 的问题中引用的 Spark 的预构建版本。 查看我对这个问题的评论。因此,您的假设是错误的。您应该添加“预建版本” 无论哪种情况,虽然我同意自己构建 Spark 是 a 解决方案,但它并不是解决问题的唯一方法。就我自己而言(我在预装 Spark 的 Amazon EMR 上运行所有东西),将我的代码降级到 Scala 2.10.x 更容易,这也将解决问题。我将把它留给@Klausos 来决定他更喜欢哪种解决方案。 我从未假装这是唯一的解决方案,这就是为什么我将其作为评论给出。您也可以使用我的评论更新您的答案,我会投票!

以上是关于在 IntelliJ IDE 中将 Spark 与 Scala 项目集成时出错的主要内容,如果未能解决你的问题,请参考以下文章

Intellij Idea搭建Spark开发环境

使用Intellij加载Spark源代码

试用最强Spark IDE--IDEA

如何在 JetBrains IDE 中将关键字设为斜体?

Spark应用远程调试

Apache Spark:从IDE远程运行作业时的无限循环