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并重新启动了我的数据框功能,它运行得很好:)
lck(lock) 文件是一个访问控制文件,它锁定数据库,以便只有单个用户可以访问或更新数据库。该错误表明存在另一个实例正在使用同一数据库。因此您需要删除 .lck 文件。在您的主目录中,转到metastore_db 并删除所有.lck 文件。