scala Spark Session Dispose after Unit test for specified file is Done

y1aodyip  于 2023-06-06  发布在  Scala
关注(0)|答案(1)|浏览(163)

我正在为Spark Scala代码编写单元测试,并面临这个问题。当我单独运行UnitTests文件时,我很好,但是,当我使用maven Testcases在模块中运行所有UnitTests时,失败了。如何为UnitTests创建spark或mock的本地示例。”
无法在已停止的SparkContext上调用方法。此已停止的SparkContext创建于:
org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:947)
”“我试过了。
1.已尝试为每个UnitTest文件创建私有spark会话。
1.为所有单元测试文件创建公共spark会话trait。
1.在每个文件的末尾调用spark.Stop()并将其从所有文件中删除。创建两个单元测试文件并尝试一起执行它们。两个文件都应该有spark会话。

Class test1 extends AnyFlatSpec
    {
      val spark: SparkSession = SparkSession.builder
        .master("local[*]")
        .getOrCreate()
      val sc: SparkContext = spark.sparkContext
      val sqlCont: SQLContext = spark.sqlContext
    "test1" should "take spark session spark context and sql context" in
    {
    //do something
    }
    }
Class test2 extends AnyFlatSpec
 {
   val spark: SparkSession = SparkSession.builder
     .master("local[*]")
     .getOrCreate()
   val sc: SparkContext = spark.sparkContext`enter code here`
   val sqlCont: SQLContext = spark.sqlContext
 "test2" should "take spark session spark context and sql context" in
 {
 //do something
 }
 }

当你单独运行这些文件时,每个文件都能正常工作,但是当你使用mvn测试一起运行它们时,它们会失败。

相关问题