web-dev-qa-db-ja.com

原因:エラーXSDB6:Derbyの別のインスタンスが既にデータベースを起動している可能性があります

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メタストアにはメタストアとしてmysqlが含まれていますが、エラーがderby execptionとして表示される理由がわかりません

22
Aman

Spark Shellでデータフレームを作成中に同じエラーが発生していました。

原因:エラーXSDB6:Derbyの別のインスタンスが既にデータベース/ metastore_dbを起動している可能性があります。

原因:

Spark-Shellの他の複数のインスタンスが既に実行されており、ダービーDBを保持しているため、これが起こっていることがわかったので、私は別のSpark Shell .toDF()エラーを投げていました:

解決策:

Psコマンドを実行して、Spark-Shellの他のインスタンスを見つけました。

ps -ef | grep spark-Shell

そして、私はkillコマンドを使用してそれらをすべて殺しました:

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

すべてのSPark-Shellインスタンスがなくなった後、新しいSPark Shellを開始し、データフレーム関数を再実行し、正常に実行されました:)

28
Dean Jain

spark Shellで実行している場合、HiveContextをインスタンス化しないでください。自動的に作成されるsqlContext(名前は誤解を招く-Sparkをコンパイルした場合、HiveContextになります)。同様の議論 here を参照してください。

シェルで実行していない場合-この例外は、同じJVMで複数のHiveContextを作成したことを意味し、これは不可能と思われます-作成できるのは1つだけです。

14
Tzach Zohar

同じエラーが表示されるもう1つのケースは、ダイナミックフレームをデータフレームに変換しようとしているときのAWS Glue開発エンドポイントのSpark=REPL 。

実際には、次のようないくつかの異なる例外があります。

  • pyspark.sql.utils.IllegalArgumentException: u"Error while instantiating 'org.Apache.spark.sql.Hive.HiveSessionState':"
  • ERROR XSDB6: Another instance of Derby may have already booted the database /home/glue/metastore_db.
  • Java.sql.SQLException: Failed to start database 'metastore_db' with class loader org.Apache.spark.sql.Hive.client.IsolatedClientLoader

Googleで解決策を見つけるのは難しいですが、最終的には here と説明されています。

ロードされたREPL=には、インスタンス化されたSparkSessionが変数sparkに含まれており、新しいSparkContextを作成する前に停止する必要があります。

>>> spark.stop()
>>> from pyspark.context import SparkContext
>>> from awsglue.context import GlueContext
>>>
>>> glue_context = GlueContext(SparkContext.getOrCreate())
>>> glue_frame = glue_context.create_dynamic_frame.from_catalog(database=DB_NAME, table_name=T_NAME)
>>> df = glue_frame.toDF()
3
newtover

WindowsマシンでWASアプリケーションを起動中に問題に直面している場合:

  1. kill Javaタスクマネージャーを使用したプロセス
  2. 削除db.lckファイルはWebSphere\AppServer\profiles\AppSrv04\databases\EJBTimers\server1\EJBTimerDB(私のDBは問題を引き起こしていたEJBTimerDBです)
  3. アプリケーションを再起動します。
2
user3007369

テーブルの作成中に同じ問題に直面していました。

sqlContext.sql("CREATE TABLE....

ps -ef | grep spark-Shellの多くのエントリが表示されたため、それらをすべて削除してspark-Shellを再起動しました。それは私のために働いた。

2
Chaitra

これは、pyspark ml Word2Vecを使用していたときに起こりました。以前に作成したモデルをロードしようとしていました。トリックは、pysparkの空のデータフレームを作成するか、sqlContextを使用してscalaを作成するだけです。以下はpython構文-

from pyspark.sql.types import StructType

schema = StructType([])`
empty = sqlContext.createDataFrame(sc.emptyRDD(), schema)

これは回避策です。このブロックを使用した後、私の問題は修正されました。注-SQLContextではなく、HiveContextからsqlContextをインスタンス化する場合にのみ発生します。

1

lck(lock)ファイルは、データベースをロックして、1人のユーザーのみがデータベースにアクセスまたは更新できるようにするアクセス制御ファイルです。このエラーは、同じデータベースを使用している別のインスタンスがあることを示しています。したがって、.lckファイルを削除する必要があります。ホームディレクトリで、metastore_dbに移動し、.lckファイルを削除します。

0
ShyamSharma

このエラーは、同じノードで実行しようとしている複数のsparkシェル、またはsparkシェルを適切に終了せずにシャットダウンしたシステム障害が原因で発生しました。プロセスIDとそれらを殺す、そのために私たち

[hadoop@localhost ~]$ ps -ef | grep spark-Shell
hadoop    11121   9197  0 17:54 pts/0    00:00:00 grep --color=auto spark-Shell
[hadoop@localhost ~]$ kill 9197
0
Shyam Gupta

sqlContext._get_Hive_ctx()を実行するとこのエラーが発生しました。これは、最初にパイプラインRDDをデータフレームにロードしようとしたために発生しました。エラーException: ("You must build Spark with Hive. Export 'SPARK_Hive=true' and run build/sbt Assembly", Py4JJavaError(u'An error occurred while calling None.org.Apache.spark.sql.Hive.HiveContext.\n', JavaObject id=o29))他の人がこれが彼らを助けなかったと報告しているのを見ました。

0
convolutionBoy