【问题标题】:Mllib dependency errorMllib 依赖错误
【发布时间】:2015-02-10 20:26:48
【问题描述】:

我正在尝试使用 Mllib 构建一个非常简单的 scala 独立应用程序,但在尝试构建程序时出现以下错误:

Object Mllib is not a member of package org.apache.spark

然后,我意识到我必须添加 Mllib 作为依赖项,如下所示:

version := "1"
scalaVersion :="2.10.4"

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

但是,这里我收到一条错误消息:

unresolved dependency spark-core_2.10.4;1.1.1not found

所以我不得不将其修改为

"org.apache.spark" % "spark-core_2.10" % "1.1.1",

但是还是有错误提示:

unresolved dependency spark-mllib;1.1.1 : not found

有人知道如何在.sbt 文件中添加Mllib 的依赖吗?

【问题讨论】:

  • 您的 sbt 和 scala 二进制兼容版本似乎发生了一些奇怪的事情,但是这样做的方式与使用 spark-core 的方式相同:"org.apache.spark" % "spark-mllib_2.10" % "1.1.1" 应该可以工作。 (我所有的项目都是用 Maven 构建的,所以我不太了解 SBT)。

标签: scala apache-spark apache-spark-mllib


【解决方案1】:

正如@lmm 指出的那样,您可以将库包含为:

libraryDependencies ++= Seq( "org.apache.spark" % "spark-core_2.10" % "1.1.0", "org.apache.spark" % "spark-mllib_2.10" % "1.1.0" )

在 sbt %% 中包括 scala 版本,并且您正在使用 scala 版本 2.10.4 构建,而 Spark 工件通常是针对 2.10 发布的。

需要注意的是,如果您要制作一个组装 jar 来部署您的应用程序,您可能希望将 spark-core 标记为已提供,例如

libraryDependencies ++= Seq( "org.apache.spark" % "spark-core_2.10" % "1.1.0" % "provided", "org.apache.spark" % "spark-mllib_2.10" % "1.1.0" )

因为 spark-core 包无论如何都会在执行器的路径中。

【讨论】:

    【解决方案2】:

    如果您使用Databricks sbt-spark-package plugin,这是另一种将依赖项添加到build.sbt 文件的方法:

    sparkComponents ++= Seq("sql","hive", "mllib")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-13
      • 1970-01-01
      • 2018-04-10
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多