욱'S 노트

Spark + IntelliJ 프로젝트 구성하기 본문

Programming/Spark

Spark + IntelliJ 프로젝트 구성하기

devsun 2017. 2. 1. 10:13

일단 무작정 스파크를 시작해보자. 목표는 빌드환경 구성을 위해서 sbt를 사용할 것이며 텍스트에디터에 개발을 수행할 수 없으니 IntelliJ로 세팅을 하겠다.


1. 인텔리J에서 프로젝트 구성

File -> New -> Project 순으로 메뉴를 선택하면 아래와 같은 화면이 나타난다.

당연히 프로젝트는 Scala에 SBT를 선택한다.


2. 프로젝트가 구성되면 build.sbt 파일에 다음과 같이 입력한다.

name := "spark-test"

version := "1.0"

scalaVersion := "2.11.7"

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"

아직 sbt를 모르지만 간략하게 설명하면 name은 프로젝트 명을 의미하고 version은 버전이다. scalaVersion은 사용할 스칼라의 버전이다.  libraryDependencies는 컴파일 및 실행에 필요한 라이브러리를 의미한다. 

sbt를 모르는 상태에서 처음 이부분에서 굉장한 삽질을 했다. 이 포스트는 작성하는 당시 스칼라의 최신버전은 2.12.1이다. 그리고 라이브러리 디펜던시를 위와 같이 명시를 했더니 계속 빌드에 실패했다. 이유는 위의 %%의 경우 적당한 스칼라 버전에 맞는 라이브러리를 찾아오게 된다. 필자의 경우 메이븐 리파지토리를 이용했는데 아래와 같이 2.11 버전만이 공개되어 있다. 

결론은 이 포스트를 작성하는 시점에는 아직 스파크에서는 스칼라 2.12를 지원하지 않는 것이다. 이에 스칼라 라이브러리를 조종할 필요가 있다.


3. 예제 프로그램을 작성해보자.

예제의 내용은 특정 파일을 읽고 해당 파일의 line count를 출력하는 프로그램이다.

import org.apache.spark.{SparkConf, SparkContext}


object SimpleApp {
def main(args: Array[String]): Unit = {
val logFile = "README.md"

val conf = new SparkConf().setAppName("Simple Application").setMaster("local")

val sc = new SparkContext(conf)

val logData = sc.textFile(logFile, 2).cache()

val lineCount = logData.count()

println(lineCount)

sc.stop()
}
}


4. 예제 프로그램을 실행해보자.

17/02/01 10:10:51 INFO SparkContext: Running Spark version 2.1.0

17/02/01 10:10:52 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

17/02/01 10:10:52 INFO SecurityManager: Changing view acls to: devsun

... 중략 ...

7

... 중략 ...

17/02/01 10:10:54 INFO ShutdownHookManager: Shutdown hook called

17/02/01 10:10:54 INFO ShutdownHookManager: Deleting directory /private/var/folders/9r/9zffgr317j1cv6d8j_gr52n80000gn/T/spark-f8d4726b-d07a-49e4-9fdf-58975f85ec3


이로서 스파크 공부를 시작할 수 있는 기반이 준비되었다. 

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

Spark - 어플리케이션 서브밋  (1) 2017.03.06
Spark - Stand alone 클러스터  (0) 2017.02.17
Spark - 클러스터 개요  (0) 2017.02.16
Spark - RDD  (0) 2017.02.01
Spark - 개요 및 시작하기  (0) 2017.02.01
Comments