Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
1. sbt-assembly 추가(project/assembly.sbt파일에 아래 내용을 추가함)
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
2. project.sbt(혹은 build.sbt) 파일에 아래의 내용을 추가한다.
(scala 2.10.4에 spark 1.5.0을 사용하는 하는 프로그램을 작성하는 경우임)
import sbtassembly.AssemblyPlugin._
name := "icbms"
version := "1.0"
//scalaVersion := "2.11.8"
scalaVersion := "2.10.4"
resolvers += "Akka Repository" at "http://repo.akka.io/releases/"
libraryDependencies ++= Seq(
("org.apache.spark" %% "spark-core" % "1.5.0" % "provided")
.exclude("org.mortbay.jetty", "servlet-api").
exclude("commons-beanutils", "commons-beanutils-core").
exclude("commons-collections", "commons-collections").
exclude("commons-logging", "commons-logging").
exclude("com.esotericsoftware.minlog", "minlog").exclude("com.codahale.metrics", "metrics-core")
,
"org.apache.spark" %% "spark-sql" % "1.5.0" ,
"org.apache.spark" % "spark-streaming_2.10" % "1.6.2",
"org.apache.spark" % "spark-streaming-kafka_2.10" % "1.6.2" ,
"org.apache.avro" % "avro" % "1.7.7"
)
assemblyMergeStrategy in assembly := {
case PathList("javax", "servlet", xs @ _*) => MergeStrategy.last
case PathList("javax", "activation", xs @ _*) => MergeStrategy.last
case PathList("org", "apache", xs @ _*) => MergeStrategy.last
case PathList("com", "google", xs @ _*) => MergeStrategy.last
case PathList("com", "esotericsoftware", xs @ _*) => MergeStrategy.last
case PathList("com", "codahale", xs @ _*) => MergeStrategy.last
case PathList("com", "yammer", xs @ _*) => MergeStrategy.last
case "about.html" => MergeStrategy.rename
case "META-INF/ECLIPSEF.RSA" => MergeStrategy.last
case "META-INF/mailcap" => MergeStrategy.last
case "META-INF/mimetypes.default" => MergeStrategy.last
case "plugin.properties" => MergeStrategy.last
case "log4j.properties" => MergeStrategy.last
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}
3. fat jar만들기(프로젝트의 project 폴더에서 아래의 명령을 실행한다)
sbt clean
sbt update
sbt compile
sbt package
sbt assembly
혹은 sbt clean update compile package assembly 를 연속 실행해도 된다.
* 참고 : https://github.com/sbt/sbt-assembly/
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
681 | dual table만들기 | 2014.05.16 | 1111 |
680 | 특정파일이 생성되어야 action이 실행되는 oozie job만들기(coordinator.xml) | 2014.05.20 | 1081 |
679 | source의 type을 spooldir로 하는 경우 해당 경로에 파일이 들어오면 파일단위로 전송함 | 2014.05.20 | 829 |
678 | hive에서 insert overwrite directory.. 로 하면 default column구분자는 'SOH'혹은 't'가 됨 | 2014.05.20 | 1126 |
677 | import 혹은 export할때 hive파일의 default 구분자는 --input-fields-terminated-by " |