を開く前に実行しているSparkContextを停止するには:は、どのように私は次のようにスパークがSparkContextを作成するとScalaでのテストを実行しています新しいもの
val conf = new SparkConf().setMaster("local").setAppName("test")
val sc = new SparkContext(conf)
は、最初の実行後にエラーがありません。しかし、今、私はこのメッセージ(および失敗したテスト通知)を取得しています:私はすべての実行中のSparkContextがあるかどうかを確認し、新しいものを起動する前にそれを停止する必要があるよう
Only one SparkContext may be running in this JVM (see SPARK-2243).
それは私が許可しない(見えます複数のコンテキスト)。 どうすればいいですか?
UPDATE:
私はこれを試してみましたが、同じエラー(私はIntellijIdeaからテストを実行していると私はそれを実行する前に、コードを作る)があります:
val conf = new SparkConf().setMaster("local").setAppName("test")
// also tried: .set("spark.driver.allowMultipleContexts", "true")
UPDATE 2:
は、class TestApp extends SparkFunSuite with TestSuiteBase {
// use longer wait time to ensure job completion
override def maxWaitTimeMillis: Int = 20000
System.clearProperty("spark.driver.port")
System.clearProperty("spark.hostPort")
var ssc: StreamingContext = _
val config: SparkConf = new SparkConf().setMaster("local").setAppName("test")
.set("spark.driver.allowMultipleContexts", "true")
val sc: SparkContext = new SparkContext(config)
//...
test("Test1")
{
sc.stop()
}
}
これは一般的なエラーです。あなたのテストフレームワークに応じて、テスト中に 'before' /' after'ブロックを使ってテスト中に同じスパークコンテキストを共有し、すべてのテストが終了したときにコンテキストを停止するようにしてください。 – jarandaf
@jarandaf:この文脈で 'before/after'を使うのはどうですか? – Klue
これをチェックすることもできます(https://spark-summit.org/2014/wp-content/uploads/2014/06/Testing-Spark-Best-Practices-Anupama-Shetty-Neil-Marshall.pdf)。 – jarandaf