我正在为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测试一起运行它们时,它们会失败。
1条答案
按热度按时间v9tzhpje1#
我发现了一篇文章,可以解决问题。Spark Unit Tests