【发布时间】:2019-05-11 20:15:06
【问题描述】:
我有一些单元测试需要有自己的 sparkSession。我扩展了 SQLTestUtils,并覆盖了许多其他 Spark 单元测试中使用的 beforeAll 和 afterAll 函数(来自源代码)。我有一些看起来像这样的测试套件:
class MyTestSuite extends QueryTest with SQLTestUtils {
protected var spark: SparkSession = null
override def beforeAll(): Unit = {
super.beforeAll()
spark = // initialize sparkSession...
}
override def afterAll(): Unit = {
try {
spark.stop()
spark = null
} finally {
super.afterAll()
}
}
// ... my tests ...
}
如果我运行其中一个,那很好,但如果我运行两个或更多,我会收到以下错误:
原因:ERROR XSDB6:另一个 Derby 实例可能已经启动了数据库 /home/jenkins/workspace/Query/apache-spark/sql/hive-thriftserver-cat-server/metastore_db。
但我认为afterAll() 应该正确关闭火花,以便我可以创建一个新的。这不对吗?我该如何做到这一点?
【问题讨论】:
-
嗨,您找到解决方案了吗?我有类似的问题
标签: apache-spark testing apache-spark-sql derby