2014-12-12 4 views
10

Я пытаюсь построить очень простой SCALA автономного приложения с помощью Mllib, но я получаю следующее сообщение об ошибке при попытке Bulid программы:Mllib ошибка зависимости

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.1: not found

поэтому мне пришлось изменить его

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

Но есть еще ошибка, которая говорит:

unresolved dependency spark-mllib;1.1.1 : not found

Любой знает, как добавить зависимость Mllib в .sbt файле?

+0

что-то странное, кажется, происходит с SBT и двоичная Scala совместимых версий, но делать это Явно так же, как и с искровым ядром: '" org.apache.spark "%" spark-mllib_2.10 "%" 1.1.1 "' должен работать. (Я строю все свои проекты с Maven, поэтому я не очень хорошо знаю SBT). – lmm

ответ

9

Как @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, и вы строите с версией 2.10.4 лестницы, тогда как искровом артефакты публикуются против 2.10 в целом.

Следует отметить, что если вы собираетесь изготовить сборную банку для развертывания вашего приложения, вы можете отметить искровое сердечник, как указано, например,

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

Поскольку пакет искрового ядра будет находиться в пути на исполнителе в любом случае.