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

7
我的项目有适用于不同HiveContext配置的单元测试(有时它们被分组在一个文件中,因为它们按功能分组)。升级到Spark 1.4后,我遇到了很多“java.sql.SQLException: Another instance of Derby may have already booted the database”的问题,因为补丁使这些上下文无法共享同一个metastore。由于每个测试都要还原单例状态,这样做并不干净。我的唯一选择是通过终止先前的Derby metastore连接来“回收”每个上下文。有方法可以实现这一点吗?
1个回答

1

在Scala中,我只是使用了FunSuite进行单元测试,并与BeforeAndAfterAll trait一起使用。然后,在beforeAll中初始化您的sparkContext,从它生成您的HiveContext,并像这样完成:

  override def afterAll(): Unit = {
    if(sparkContext != null)
      sparkContext .stop()
  }

根据我注意到的,它还会关闭与之相关联的HiveContext。


非常感谢!让我先测试一下。 - tribbloid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接