如何清理运行Hive元存储的derby实例



我在SO上经历了多个线程,其中谈到了将hive元存储迁移到mysql,以防多个用户想要访问它。这种情况不同。

我正在尝试运行一个配置单元程序,在数据集上执行SQL,然后清理它(关闭上下文),在另一个数据集上运行另一个SQL。但我看到错误说:

错误XSDB6:Derby的另一个实例可能已经启动了数据库

我的问题是,有没有一种方法可以清理运行hive元存储的derby实例,这样我的下一次上下文初始化就看不到上一个实例?我觉得这种情况类似于运行多个单元测试,应该有一种方法来清理。

我在Spark Shell上创建数据帧时遇到了同样的错误:

由以下原因引起:错误XSDB6:Derby的另一个实例可能已经启动了数据库/metastore_db。

原因:

我发现这种情况的发生是因为Spark Shell的其他多个实例已经在运行并持有derby DB,所以当我启动另一个Spark Shell并使用RDD.toDF()在其上创建数据帧时,它抛出了错误:

解决方案:

我运行ps命令来查找Spark Shell的其他实例:

ps -ef | grep spark-shell

我用杀人命令杀死了他们:

kill -9 Spark-Shell-processID ( example: kill -9 4848)

在所有SPark Shell实例都消失后,我启动了一个新的SPark Shell,并重新运行了我的Data frame函数,它运行得很好:)

相关内容

  • 没有找到相关文章

最新更新