Posted at

Spark・Playで詰んだ話の詰め合わせ2

More than 3 years have passed since last update.


SparkContextとPlay

Playは、一度activator runを行った後に内容を書き換えるとブラウザで更新することで変わった内容が反映されます。ですが、SparkContextが含まれているプログラムを更新しようとすると

ProvisionException: Unable to provision, see the following errors:

1) Error injecting constructor, org.apache.spark.SparkException: Only one SparkContext may be running in this JVM (see SPARK-2243). To ignore this error, set spark.driver.allowMultipleContexts = true. The currently running SparkContext was created at:
org.apache.spark.SparkContext.<init>(SparkContext.scala:81)
controllers.Application.<init>(Application.scala:21)
controllers.Application$$FastClassByGuice$$b5b6aa19.newInstance(<generated>)
com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
...

と表示されるはずです。エラーの内容としては、SparkContextは1つしか存在してはならないという事を主張しています。そのエラーメッセージには

To ignore this error, set spark.driver.allowMultipleContexts = true.

と書かれていますが、これをする必要はありません。(これで上手く動いた試しがないので、誰か詳しく知っていたらお願いします)

単純に一度activatorを落として、再度activator runを行って下さい。