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

Ama*_*man 22 hadoop derby apache-spark

我正在尝试运行SparkSQL:

val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)  
Run Code Online (Sandbox Code Playgroud)

但是我得到的错误如下:

        ... 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)
Run Code Online (Sandbox Code Playgroud)

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

小智 28

我在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并重新启动了我的数据框功能,它运行得很好:)


Tza*_*har 14

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

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

  • 问题是它似乎是随着当前的火花v2.2自动发生的.只需在同一台机器上启动第二个火花壳就足以导致错误. (3认同)

Shy*_*rma 6

lck(lock) 文件是一个访问控制文件,它锁定数据库,以便只有单个用户可以访问或更新数据库。该错误表明存在另一个实例正在使用同一数据库。因此您需要删除 .lck 文件。在您的主目录中,转到metastore_db 并删除所有.lck 文件。