How to kick-start Spark development on IntelliJ IDEA in 4 stepsを参考に開発環境を作ったのでメモ
おおまかな手順
- sbt管理なプロジェクトを作る
- sbt-assemblyをインストール
- sbtファイルにSparkの依存ライブラリを記述する
これだけで、SparkアプリケーションをSparkのlocalモードで走らせることができるようになる。このへん、Sparkがスケジューラ部分をちゃんとモジュール化してるから簡単にできるんだろうなぁという印象。コードは読んでないけど・・
sbt管理なプロジェクトを作る
sbt-assemblyをインストール
分散環境上で動くSparkでは、spark-submit
するときにアプリケーションのJARファイルを配る。このときに外部ファイルへの依存があると、各サーバーにそれらのファイルも配らなきゃいけなくなる。これを避けるために単独ファイルで起動可能なJARを作るためにsbt-assemblyを利用する。spark-submit
にはファイルを配るオプションもあるが、管理やデプロイ、デバッグ等が複雑化するので、Learning Sparkでも単独JAR化するのを推奨されている。
方法は簡単。${PROJECT_HOME}/project/plugins.sbt
に下記のように書けばOK。
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")
sbtファイルにSparkの依存ライブラリを記述する
あとはこんな感じにsbtファイルを書く
name := "HelloSpark"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies ++= Seq(
"org.apache.spark" % "spark-core_2.11" % "1.4.0"
)
同じライブラリの複数のバージョンへの依存が発生したときに、これを解決するおまじない的なもの(重複排除のストラテジー)をsbtファイルに書いてやる必要があった気がするが、手元の環境だとうまく動いているのと、メモを無くしてしまったので割愛・・・orz
サンプルアプリケーションを動かす
ここまでくればアプリケーションを動かせるようになっている。たとえば下記のようにコードを書いて・・
実行環境の設定をしてやればOK
お約束
これはわたし個人のメモであり、わたしの雇用者を代表するものではりません。