2016-06-02 4 views
2

나는 spark를 사용하는 스칼라 다중 프로젝트를 가지고 있으며, sbt 플러그인 sbt- 어셈블리 0.14.3을 사용해 팻 항아리를 만들려고한다. 내 buils.sbt의 그런 모습 :sbt- 어셈블리로 다중 프로젝트 팻말을 만드는 방법

lazy val commonSettings = Seq(
    organization := "blabla", 
    version := "0.1.0", 
    scalaVersion := "2.11.8" 
) 


lazy val core = (project in file(".")) 
    .settings(commonSettings: _*) 
    .settings(libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.6.1" % "provided", 
"org.apache.spark" %% "spark-sql" % "1.6.1" % "provided", 
"org.apache.spark" %% "spark-mllib" % "1.6.1" % "provided",...) 


lazy val sub_project = project 
    .settings(commonSettings: _*) 
    .aggregate(core) 
    .dependsOn(core) 

그리고 나는이 지방 항아리 프로젝트 코어의 모든 라이브러리와 코드를 포함하도록 sub_project의 지방 항아리를 만들고 싶습니다.

sbt 
project sub_project 
assembly 

그리고 나는 다음과 같은 오류가 발생합니다 : : 그러나

[error] missing or invalid dependency detected while loading class file 'blabla.class'. 
[error] Could not access term spark in package org.apache, 
[error] because it (or its dependencies) are missing. Check your build definition for 
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.) 
[error] A full rebuild may help if 'blabla.class' was compiled against an incompatible version of org.apache. 
[error] one error found 

, 난, 난 내 지방 항아리 얻을 수있는 핵심 프로젝트 "조립"사용할 때 나는 다음 시도했다.

+0

지정한 스칼라 버전이 컴파일 된 스파크 버전과 일치합니까? – nattyddubbs

+0

네,하지만 패키지 일뿐입니다. 아직 실행하지 않으므로 버전이 다르더라도 패키징에 문제가 없어야합니다. – Jitsumi

답변

1

귀하의 빌드에 따르면 sub_project의 클래스 경로에는 Spark에 대한 라이브러리 의존성 (provided 문과 관계 없음)이 없으므로 일치하는 오류 메시지가 표시됩니다. 이 종속성을 공통 설정에 추가 할 수 있습니다.

관련 문제