LoginSignup
4
4

More than 5 years have passed since last update.

sbt + Spark で分散処理するときの注意ネタ

Posted at

sbt を使用して Spark を分散実行するとソース内の無名内部クラスに対して ClassNotFoundException が発生する。この場合、一度 JAR を作成して明示的に SparkContext に指定すると解消する。

val sc = new SparkContext("spark://...", ...)
sc.addJar("./target/scala-2.10/myproject_2.10-1.0-SNAPSHOT.jar")

sbt から実行するときに package run の順序でコマンドを指定して該当 JAR が作成されてから実行するように起動すれば良い。

$ sbt package run

sbt run はコンパイル済みクラスを target/classes から参照するが、Spark はクラスパス上の無名内部クラスの *.class ファイルを分散処理の各ノードに配布していないような感じ。1.x~1.5 まで確認しているが後のバージョンで改善されるかも知れない。まぁ粒度が高いと転送パフォーマンスも悪いので JAR 化は必ずしましょう。

4
4
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
4
4