web-dev-qa-db-fra.com

Causée par: ERREUR XSDB6: une autre instance de Derby a peut-être déjà démarré la base de données.

J'essaie de lancer SparkSQL: 

val sqlContext = new org.Apache.spark.sql.Hive.HiveContext(sc)  

Mais l’erreur que j’obtiens est la suivante: 

        ... 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)

Je vois qu'il existe un metastore_db folder existe ..
Mon métastore Hive inclut mysql en tant que métastore.Mais nous ne savons pas pourquoi l’erreur apparaît comme une exception

20
Aman

La même erreur se produisait lors de la création de cadres de données sur Spark Shell:

Causée par: ERREUR XSDB6: une autre instance de Derby a peut-être déjà démarré la base de données/metastore_db.

Cause:

J'ai constaté que cela se produisait car plusieurs autres instances de Spark-Shell fonctionnaient déjà et détenaient déjà une base de données derby. Ainsi, lorsque je démarrais un autre Spark Shell et que je créais un cadre de données à l'aide de RDD.toDF (), une erreur se présentait:

Solution:

J'ai exécuté la commande ps pour trouver d'autres instances de Spark-Shell:

ps -ef | grep spark-Shell

et je les ai tous tués en utilisant la commande kill:

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

Après que toutes les instances de SPark-Shell aient disparu, j'ai démarré un nouveau SPark Shell et j'ai rediffusé ma fonction de trame de données. Tout s'est très bien passé :)

25
Dean Jain

Si vous utilisez spark Shell, vous ne devriez pas instancier un HiveContext, il y en a un créé automatiquement appelé sqlContext (le nom est trompeur - si vous compilez Spark avec Hive, ce sera un HiveContext). Voir discussion similaire ici .

Si vous n'exécutez pas dans Shell - cette exception signifie que vous avez créé plusieurs HiveContext dans la même machine virtuelle, ce qui semble impossible - vous ne pouvez en créer qu'un.

13
Tzach Zohar

Un autre cas où vous pouvez voir la même erreur est un Spark REPL d'un point de terminaison dev AWS Glue, lorsque vous essayez de convertir un cadre dynamique en un cadre de données.

Il y a en fait plusieurs exceptions différentes comme:

  • 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

La solution est difficile à trouver avec Google mais finalement elle est décrite ici .

Le REPL chargé contient une SparkSession instanciée dans une variable spark et il vous suffit de l'arrêter avant de créer une nouvelle 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()
2
newtover

Je faisais face au même problème lors de la création de la table. 

sqlContext.sql("CREATE TABLE....

Je pouvais voir beaucoup d'entrées pour ps -ef | grep spark-Shell, alors je les ai toutes tuées et redémarré spark-Shell. Cela a fonctionné pour moi. 

2
Chaitra

Si vous rencontrez des problèmes lors de la création de l'application WAS sur une machine Windows:

  1. tuer les processus Java à l'aide du gestionnaire de tâches
  2. supprimer le fichier db.lck présent dans WebSphere\AppServer\profiles\AppSrv04\databases\EJBTimers\server1\EJBTimerDB (ma base de données est EJBTimerDB qui était à l'origine du problème)
  3. redémarrer l'application.
1
user3007369

Cela s'est produit lorsque j'utilisais pyspark ml Word2Vec. J'essayais de charger le modèle précédemment construit. L'astuce consiste à créer un cadre de données vide de pyspark ou scala à l'aide de sqlContext. Voici la syntaxe python - 

from pyspark.sql.types import StructType

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

Ceci est une solution de contournement. Mon problème est résolu après l'utilisation de ce bloc. Remarque - Cela ne se produit que lorsque vous instanciez sqlContext à partir de HiveContext, et non SQLContext.

1
Subhojit Mukherjee

L'erreur est due au fait que vous utilisez plusieurs étincelles Shell que vous essayez d'exécuter sur le même noeud ou en raison d'une défaillance du système, il est arrêté sans quitter correctement l'étincelle Shell. nous 

[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

J'ai eu cette erreur en exécutant sqlContext._get_Hive_ctx() Cela a été provoqué par le fait de tenter initialement de charger un RDD en pipeline dans un cadre de données J'ai l'erreurException: ("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)) ceci avant de le reconstruire, mais à titre d’information, j’ai vu d’autres rapporter que cela ne les aidait pas.

0
convolutionBoy