[spark] Intellij 에서 scala 셋팅하는 법

반응형

Intellij에서 스칼라 프로젝트를 생성하고 spark 간단한 예제를 실행하는 것을 해보자.

우선 스칼라로 개발하기 위해서는 자바가 먼저 설치되어 있어야 한다. 자바 설치가 완료되어 있다는 가정하에 스칼라를 별도로 설치하겠다.

 

스칼라 플러그인 설치

1. Preference> Plugins이나 shift+ shift 클릭 후 Plugins 검색해서 플러그인 창을 연다.

2. 플러그인창에서 Scala 플러그인을 검색해서 설치한다.

3. 플러그인이 설치한 후에는 플러그인을 적용하기 위해서 IDE를 재시작해야 한다.

 

 


 

 

프로젝트 생성

File > New > Project로 새 프로젝트 창을 연다.

왼쪽에서 Scala 선택 > 빌드 도구를 sbt 선택한다.

이제 스칼라 클래스를 생성할 수 있다.

스칼라 클래스를 생성해서 Hello World를 찍어보자.

object HelloWorld extends App {
    println("Hello World!")
}

 

 


스파크 Word Count 예제 실행하기

Intellij에서 스칼라를 실행하기 위한 준비과정이 모두 끝났다. 이제 아래의 text 파일을 읽어서 word count 하는 간단한 예제를 실행해보자.

 

- words.txt

hello how are you
hello how are you

 

spark 라이브러리를 추가하자.

- build.sbt

name := "spark-sample"

version := "0.1"

scalaVersion := "2.12.10"

val sparkVersion = "2.4.6"

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

 

 

SparkSession을 매번 생성하는 일이 번거로우니 SparkSessionWrapper를 생성하겠다.

trait SparkSessionWrapper {

  lazy val spark: SparkSession = {
    SparkSession
      .builder()
      .master("local")
      .appName("spark app")
      .getOrCreate()
  }

}

 

 

이제 텍스트 파일을 읽고 단어의 수를 세는 예제 코드를 작성하자.

object WordCount extends SparkSessionWrapper {

  def main(args: Array[String]): Unit = {
    import spark.implicits._

    val textFile = spark.read.textFile("src/main/resources/words.txt")
    val wordCounts = textFile.flatMap(line => line.split(" "))
      .groupByKey(identity)
      .count()

    wordCounts.show()
  }
}

 

결과를 확인해보자.

+-----+--------+
|value|count(1)|
+-----+--------+
|  you|       2|
|  how|       2|
|hello|       2|
|  are|       2|
+-----+--------+