을 던져, 기본 SparkContext와 테스트를 실행하는, localTest
라고 내 테스트 스위트에 쉽게 테스트를 추가 할 수 있습니다내가 새로운 기능 FunSuite를 확장하여 내 <a href="https://spark.apache.org" rel="nofollow">Spark</a> 작업을 테스트 <a href="http://doc.scalatest.org/2.2.1/index.html#org.scalatest.FunSuite" rel="nofollow">FunSuite</a>을 사용하고자하는 NullPointerException이
class MyTestSuite extends SparkFunSuite {
localTest("My Spark test") { sc =>
assertResult(2)(sc.parallelize(Seq(1,2,3)).filter(_ <= 2).map(_ + 1).count)
}
}
문제는 내가 테스트를 실행할 때 나는 NullPointerException
를 얻을 수 있다는 것입니다
[info] MyTestSuite:
[info] - My Spark test *** FAILED ***
[info] java.lang.NullPointerException:
[info] at org.apache.spark.SparkContext.defaultParallelism(SparkContext.scala:1215)
[info] at org.apache.spark.SparkContext.parallelize$default$2(SparkContext.scala:435)
[info] at MyTestSuite$$anonfun$1.apply(FunSuiteTest.scala:24)
[info] at MyTestSuite$$anonfun$1.apply(FunSuiteTest.scala:23)
[info] at SparkFunSuite$$anonfun$localTest$1.apply$mcV$sp(FunSuiteTest.scala:13)
[info] at SparkFunSuite$$anonfun$localTest$1.apply(FunSuiteTest.scala:13)
[info] at SparkFunSuite$$anonfun$localTest$1.apply(FunSuiteTest.scala:13)
[info] at org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
[info] at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
[info] at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
[info] ...
NullPointerException
의 원인은 무엇입니까? 이 문맥에서 Spark를 사용하는 나의 방식이 올바르지 않습니까?
저는 스칼라 2.10.4를 spark-core
1.0.2와 scalatest
2.2.2로 사용하고 있습니다.
'.set ("spark.default.parallelism", "n")'을 호출하면,'setMaster' 바로 다음에'n'이 코어의 개수이고, NPE가 사라지나요? – huitseeker
@huitseeker 같은 오류가 발생했습니다. 나는 정확히 null인지 모르겠다. – mariop
Spark의 자체 유닛 테스트는 비슷한 패턴을 사용한다. (ScalaTest의 BeforeAndAfterAll과 BeforeAndAfterEach 특성을 사용하여이 설정을 수행한다.) 이것이 작동하지 않는다는 것에 놀랐다. 여러 테스트를 동시에 실행하고 있습니까 (예 : 동일한 JVM에서 동시에 실행중인 SparkContext를 보유하고 있습니까?). –