当前位置:  开发笔记 > 后端 > 正文

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

如何解决《引发者:错误XSDB6:Derby的另一个实例可能已经启动了数据库》经验,为你挑选了2个好方法。

我正在尝试运行SparkSQL:

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)  

但是我得到的错误如下:

        ... 125 more
Caused by: java.sql.SQLException: Another instance of Derby may have already booted the database /root/spark/bin/metastore_db.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
        ... 122 more
Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database /root/spark/bin/metastore_db.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
        at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.privGetJBMSLockOnDB(Unknown Source)
        at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.getJBMSLockOnDB(Unknown Source)
        at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.boot(Unknown Source)

我看到有一个metastore_db文件夹存在..
我的hive Metastore包含mysql as metastore.但不确定为什么错误显示为derby execption



1> 小智..:

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

引发者:错误XSDB6:Derby的另一个实例可能已经启动了数据库/ metastore_db.

原因:

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

解:

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

ps -ef | grep spark-shell

我使用kill命令杀死它们:

kill -9 Spark-Shell-processID(例如:kill -9 4848)

在所有SPark-Shell实例都消失之后,我开始了一个新的SPark SHell并重新启动了我的数据框功能,它运行得很好:)



2> Tzach Zohar..:

如果你在spark shell中运行,你不应该实例化一个HiveContext,有一个自动调用的创建sqlContext(名称有误导性 - 如果你用Hive编译Spark,它将是一个HiveContext).看到类似的讨论在这里.

如果你没有在shell中运行 - 这个异常意味着你在同一个JVM中创建了多个HiveContext,这似乎是不可能的 - 你只能创建一个.


问题是它似乎是随着当前的火花v2.2自动发生的.只需在同一台机器上启动第二个火花壳就足以导致错误.
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有