在Apache Spark SQL中,如何从HiveContext关闭Metastore连接

tri*_*oid 7 thrift apache-spark apache-spark-sql apache-spark-1.4

我的项目有针对不同HiveContext配置的单元测试(有时它们在一个文件中,因为它们按功能分组.)

在升级到Spark 1.4之后,我遇到了很多'java.sql.SQLException:Derby的另一个实例可能已经启动了数据库'问题,因为补丁使这些上下文无法共享相同的Metastore.因为它不干净,无法为每次测试恢复单身人士的状态.我唯一的选择归结为通过终止先前的Derby Metastore连接来"回收"每个上下文.有没有办法做到这一点?

Nie*_*and 1

在 scala 中,我只是将 FunSuite 与 BeforeAndAfterAll 特性一起用于单元测试。然后你可以在 beforeAll 中初始化你的 SparkContext,从中生成你的 HiveContext 并像这样完成它:

  override def afterAll(): Unit = {
    if(sparkContext != null)
      sparkContext .stop()
  }
Run Code Online (Sandbox Code Playgroud)

据我所知,它还关闭了附加到它的 HiveContext。