在 Apache Spark SQL 中,如何从 HiveContext 关闭 Metastore 连接
In Apache Spark SQL, How to close metastore connection from HiveContext
我的项目有针对不同 HiveContext 配置的单元测试(有时它们在一个文件中,因为它们按功能分组。)
升级到 Spark 1.4 后,我遇到了很多 'java.sql.SQLException: Another instance of Derby may have already booted the database' 问题,因为补丁使这些上下文无法共享同一个元存储。因为为每个测试恢复单例状态是不干净的。我唯一的选择归结为 "recycle" 每个上下文通过终止先前的 Derby Metastore 连接。有办法吗?
好吧,在 Scala 中,我只是将 FunSuite 与 BeforeAndAfterAll 特性一起用于单元测试。然后你可以在 beforeAll 中初始化你的 sparkContext,从中生成你的 HiveContext 并像这样完成它:
override def afterAll(): Unit = {
if(sparkContext != null)
sparkContext .stop()
}
据我所知,它还会关闭附加到它的 HiveContext。
我的项目有针对不同 HiveContext 配置的单元测试(有时它们在一个文件中,因为它们按功能分组。)
升级到 Spark 1.4 后,我遇到了很多 'java.sql.SQLException: Another instance of Derby may have already booted the database' 问题,因为补丁使这些上下文无法共享同一个元存储。因为为每个测试恢复单例状态是不干净的。我唯一的选择归结为 "recycle" 每个上下文通过终止先前的 Derby Metastore 连接。有办法吗?
好吧,在 Scala 中,我只是将 FunSuite 与 BeforeAndAfterAll 特性一起用于单元测试。然后你可以在 beforeAll 中初始化你的 sparkContext,从中生成你的 HiveContext 并像这样完成它:
override def afterAll(): Unit = {
if(sparkContext != null)
sparkContext .stop()
}
据我所知,它还会关闭附加到它的 HiveContext。