LoginSignup
2
3

More than 5 years have passed since last update.

[メモ]Sparkのローカル開発環境を作った

Last updated at Posted at 2019-02-06

背景

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
~/.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 scala@2.11

Intellijだけを使うなら、ここでscalaをインストールしなくてもよいですが、インストールしておいても損はないでしょう。

自分はscala 2.11も使いたいので、別でscala2.11もインストールした。

  • 環境変数設定
~/.bash_profile
export SCALA_HOME="/usr/local/Cellar/scala@2.11/2.11.12/"
export PATH=$SCALA_HOME/bin:$PATH

Spark

  • 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を指定しましょう。

image.png

  • 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を追加する

image.png

  • [Project Settings] -> [Global Libraries] のところにscala-sdkを追加する

image.png

参照

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3