2014-12-12 7 views
10

Ich versuche, eine sehr einfache scala Standalone-Anwendung mit dem Mllib zu bauen, aber ich bekomme die folgende Fehlermeldung beim Versuch, das Programm zu bulid:Mllib Abhängigkeitsfehler

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

Dann erkannte ich, dass ich zu Mllib als Abhängigkeit wie folgt hinzufügen:

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

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

Aber hier habe ich einen Fehler bekam, der sagt:

unresolved dependency spark-core_2.10.4;1.1.1: not found

so musste ich es

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

Aber es ist immer noch ein Fehler ändern, die sagt:

unresolved dependency spark-mllib;1.1.1 : not found

Wer weiß, wie die Abhängigkeit von Mllib in .sbt Datei hinzufügen?

+0

Etwas seltsam scheint mit Ihrem sbt und scala binärkompatibel Versionen der Fall zu sein, aber es explictly das tun Genau wie bei spark-core: '" org.apache.spark "%" spark-mllib_2.10 "%" 1.1.1 "' sollte funktionieren. (Ich baue alle meine Projekte mit Maven, deshalb kenne ich SBT nicht besonders gut). – lmm

Antwort

9

Wie @lmm wies darauf hin, können Sie stattdessen sind die Bibliotheken als:

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

In sbt %% enthält die scala-Version, und Sie bauen mit scala Version 2.10.4 während des Spark-Artefakte werden allgemein gegen 2.10 veröffentlicht.

Es sollte beachtet werden, dass, wenn Sie ein Assembly-Krug für die Bereitstellung Ihrer Anwendung erstellen möchten, Sie vielleicht den Spark-Kern markieren möchten, wie z.

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

Da das Funkenkernpaket sowieso auf dem Weg auf Testamentsvollstrecker sein wird.

1

Hier ist eine weitere Möglichkeit, die Abhängigkeit zu Ihrer build.sbt Datei hinzufügen, wenn Sie die Databricks sbt-spark-package plugin verwenden:

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