sbtplugin


/project 디렉토리에 assembly.sbt 넣기


$ more assembly.sbt

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.1")


$ more build.sbt
name := "MySampleJar"

version := "1.0"

scalaVersion := "2.10.1"

libraryDependencies ++= Seq (
        "org.apache.spark" %% "spark-core" % "1.6.0" % "provided",
        "org.apache.spark" %% "spark-sql" % "1.6.0" % "provided"
)

jarName in assembly := "my-sample.jar"

// Scala 라이브러리를 제외하고 싶은 경우 추가
assemblyOption in assembly :=
        (assemblyOption in assembly).value.copy(includeScala = false)


다음 커맨드를 실행하면 모든 파일이 묶여서 하나의 jar로 만들어진다.
$ sbt assembly

참고: https://github.com/sbt/sbt-assembly



테스트를 건너띄고 합치고 싶은 경우는 다음과 같이 하면 된다.


sbt "set test in assembly := {}" clean assembly


참고: http://stackoverflow.com/questions/26499444/how-run-sbt-assembly-command-without-tests-from-command-line


.scala 파일 맨 앞줄에 shebang을 넣어준다.


  1 #!/usr/bin/env scala

  2

  3 println("hello")


파일 속성을 변경해준다.


$ chmod a+x test.scala


이제 바로 실행이 된다.


$ ./test.scala

hello



$ sbt 'inspect sbtVersion'

[info] Set current project to gilbird (in build file:/C:/cygwin64/home/gilbird/)

[info] Setting: java.lang.String = 0.13.9

[info] Description:

[info]  Provides the version of sbt.  This setting should be not be modified.

[info] Provided by:

[info]  */*:sbtVersion

[info] Defined at:

[info]  (sbt.Defaults) Defaults.scala:135

[info] Delegates:

[info]  *:sbtVersion

[info]  {.}/*:sbtVersion

[info]  */*:sbtVersion

[info] Related:

[info]  */*:sbtVersion




$ sbt sbt-version

[info] Set current project to root--sbt (in build file:/C:/cygwin64/home/gilbird/.sbt/)

[info] 0.13.9


log4j 컬러로 출력하기

http://stackoverflow.com/questions/7848325/making-a-log4j-console-appender-use-different-colors-for-different-threads


이클립스 ANSI 콘솔

https://marketplace.eclipse.org/content/ansi-escape-console

spark-shell 사용중에 saveAsTextFile을 사용하기전에 제약사항이 저장할 디렉토리에 파일이 없어야 한다.

따라서 미리 파일을 지워야 하는데 s3같은 경우는 hadoop fs -rmr 커맨드 한줄로 가능하다.

spark-shell 안에서 hadoop 커맨드를 실행하고자 하는 경우 다음과 같이 하면 된다.


scala> import sys.process._

import sys.process._


scala> "hadoop fs -rmr s3://버킷명/지우고_싶은_디렉토리" !



AWS S3 Java SDK를 써도 되긴하는데 귀찮다. 

참고
* http://alvinalexander.com/scala/scala-execute-exec-external-system-commands-in-scala


'Resources > Spark' 카테고리의 다른 글

임시 테이블 만들기  (0) 2017.01.23
spark-shell 사용법  (0) 2016.09.30
spark-shell에서 scala 버전 구하기  (0) 2016.09.29
Date에 Range를 넣어보자.  (0) 2016.02.11

+ Recent posts