[참고] 스파크의 로컬 개발 환경을 만들었다

배경



Spark에서 데이터의 중복을 제외하고 싶기 때문에, spark의 개발 환경을 로컬로 만들어 보았다.

macOS 10.14.2

필요한 것


  • JDK
  • Scala
  • Spark
  • IntelliJ
  • sbt


  • Spark 개발 환경 만들기



    JDK



    원래 jdk1.8.0_11 가 인스톨 끝났습니다만, 그 버젼이라고 잘 가지 않았으므로, 수동으로 최신의 JDK에 갱신했다.

    그건 그렇고, macOS에는 기본 JRE가 설치되어 있지만 JDK는 없습니다.

    「시스템 설정」-> 「Java」로 갱신해도 JRE 밖에 갱신되지 않습니다.
  • 오래된 JDK 지우기
  • 
    sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk
    
  • 최신 JDK 설치
  • Java SE Development Kit 8 - Downloads
  • Download and install

  • 환경 변수 설정

  • ~/.bash_profile
    export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/"
    export PATH=$JAVA_HOME/bin:$PATH
    

    Scala


  • Scala 설치
  • brew install scala
    brew install [email protected]
    

    Intellij만 사용한다면 여기에서 scala를 설치하지 않아도 되지만, 설치해 두어도 손해는 없을 것입니다.

    자신은 scala 2.11도 사용하고 싶으므로, 별도로 scala2.11도 설치했다.
  • 환경 변수 설정

  • ~/.bash_profile
    export SCALA_HOME="/usr/local/Cellar/[email protected]/2.11.12/"
    export PATH=$SCALA_HOME/bin:$PATH
    

    스파크


  • spark 설치
  • $ brew search spark
    ==> Formulae
    apache-spark ✔                                                                  spark                                                                           sparkey
    
    ==> Casks
    homebrew/cask/spark
    
    apache-sparkspark 하지만 spark 는 전혀 다른 것입니다. apache-spark를 설치합시다.
    brew install apache-spark
    
    $ spark-shell
    2019-02-08 09:42:20 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    2019-02-08 09:42:32 WARN  Utils:66 - Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
    Spark context Web UI available at http://172.16.193.147:4041
    Spark context available as 'sc' (master = local[*], app id = local-1549586552672).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _\ \/ _ \/ _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_\   version 2.4.0
          /_/
    
    Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_201)
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> :quit
    

    Intellij


  • Intellij 설치
  • plugin scala 설치
  • plugin sbt 설치

  • 설정


  • SDK 설정

  • 최신 JDK를 지정합시다.


  • buiid.sbt
  • name := "test"
    
    version := "0.1"
    
    scalaVersion := "2.11.12"
    
    libraryDependencies ++= Seq(
      "org.apache.spark" % "spark-core_2.11" % "2.0.2"
    )
    

    참고 : scala 버전 2.12.8은 작동하지 않는 것처럼 버전 2.11.12로 만들었습니다.


    import org.apache.spark.{SparkConf, SparkContext}
    
    object BasicWordCount {
      def main(args: Array[String]): Unit = {
        val conf = new SparkConf().setMaster("local").setAppName("Basic word count")
        val sc = new SparkContext(conf)
    
        val textFile = sc.textFile("./README.md")
        val words = textFile.flatMap(line => line.split(" "))
        val wordcounts = words.map(word => (word, 1)).reduceByKey((a, b) => a + b)
    
        wordcounts.saveAsTextFile("./wordcounts")
      }
    }
    

    maven의 경우



    maven의 경우에는 설정이 좀 필요합니다.
  • [Project Settings] -> [Libraries]에 spark-core_2.11 추가


  • [Project Settings] -> [Global Libraries] 에 scala-sdk 추가



  • 참조


  • Installation of the JDK and the JRE on macOS
  • Java SE Development Kit 8 - Downloads
  • Getting Started with Scala in IntelliJ | Scala Documentation
  • 좋은 웹페이지 즐겨찾기