복붙노트

[HADOOP] 원인 : ERROR XSDB6 : Derby의 다른 인스턴스가 이미 데이터베이스를 부팅했을 수 있습니다.

HADOOP

원인 : ERROR XSDB6 : Derby의 다른 인스턴스가 이미 데이터베이스를 부팅했을 수 있습니다.

Spark SQL을 실행하려고합니다.

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 폴더가 있다는 것을 알았습니다 .. 내 하이브 메타 스토어에는 mysql이 metastore로 포함되어 있습니다. 그러나 왜 오류가 더비 실행으로 표시되는지 확실하지 않습니다.

해결법

  1. ==============================

    1.Spark Shell에서 데이터 프레임을 만드는 동안 같은 오류가 발생했습니다.

    Spark Shell에서 데이터 프레임을 만드는 동안 같은 오류가 발생했습니다.

    원인 : ERROR XSDB6 : Derby의 다른 인스턴스가 이미 데이터베이스 / metastore_db를 부팅했을 수 있습니다.

    원인:

    나는 Spark-Shell이 ​​이미 실행 중이고 더비 DB를 이미 보유하고 있으므로 다른 스파크 셸을 시작하고 RDD.toDF ()를 사용하여 데이터 프레임을 만들 때 오류가 발생 함으로 인해 이러한 일이 발생하는 것으로 나타났습니다.

    해결책:

    ps 명령을 실행하여 Spark-Shell의 다른 인스턴스를 찾습니다.

    ps -ef | 그립 킥 - 쉘

    kill 명령을 사용하여 모두 죽였습니다.

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

    모든 SPARK-SHIFT 인스턴스가 사라진 후에, 나는 새로운 SPARK SHELL을 시작했고 데이터 프레임 함수를 재배치했다.

  2. ==============================

    2.스파크 셸에서 실행중인 경우에는 HiveContext를 인스턴스화하면 안됩니다. 자동으로 sqlContext라는 이름이 만들어집니다 (이름이 잘못되었습니다 - Hive로 Spark를 컴파일하면 HiveContext가됩니다). 비슷한 토론을 여기서보십시오.

    스파크 셸에서 실행중인 경우에는 HiveContext를 인스턴스화하면 안됩니다. 자동으로 sqlContext라는 이름이 만들어집니다 (이름이 잘못되었습니다 - Hive로 Spark를 컴파일하면 HiveContext가됩니다). 비슷한 토론을 여기서보십시오.

    쉘에서 실행하지 않는 경우,이 예외는 동일한 JVM에서 둘 이상의 HiveContext를 작성했음을 의미합니다. 이는 불가능한 것으로 보이며 하나만 작성할 수 있습니다.

  3. ==============================

    3.나는 테이블을 만들면서 같은 문제에 직면했다.

    나는 테이블을 만들면서 같은 문제에 직면했다.

    sqlContext.sql("CREATE TABLE....
    

    ps -ef |에 대한 많은 항목을 볼 수있었습니다. grep spark-shell 그래서 나는 그들을 모두 죽이고 spark-shell을 재시작했다. 그것은 나를 위해 일했습니다.

  4. ==============================

    4.동일한 오류를 볼 수있는 또 다른 경우는 동적 프레임을 데이터 프레임으로 변환하려고 할 때 AWS Glue 개발자 엔드 포인트의 Spark REPL입니다.

    동일한 오류를 볼 수있는 또 다른 경우는 동적 프레임을 데이터 프레임으로 변환하려고 할 때 AWS Glue 개발자 엔드 포인트의 Spark REPL입니다.

    실제로 다음과 같은 몇 가지 예외가 있습니다.

    해결책은 Google로 찾아 내기가 어렵지만 궁극적으로 여기에 설명되어 있습니다.

    로드 된 REPL에는 변수 spark에 인스턴스화 된 SparkSession이 포함되어 있으므로 새 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()
    
  5. ==============================

    5.Windows 컴퓨터에서 WAS 응용 프로그램을 실행하는 동안 문제가 발생하는 경우 :

    Windows 컴퓨터에서 WAS 응용 프로그램을 실행하는 동안 문제가 발생하는 경우 :

  6. ==============================

    6.이것은 내가 pyspark ml Word2Vec을 사용할 때 일어났습니다. 이전에 빌드 된 모델을로드하려고했습니다. 트릭은 sqlContext를 사용하여 pyspark 또는 scala의 빈 데이터 프레임을 만드는 것입니다. 다음은 파이썬 구문입니다.

    이것은 내가 pyspark ml Word2Vec을 사용할 때 일어났습니다. 이전에 빌드 된 모델을로드하려고했습니다. 트릭은 sqlContext를 사용하여 pyspark 또는 scala의 빈 데이터 프레임을 만드는 것입니다. 다음은 파이썬 구문입니다.

    from pyspark.sql.types import StructType
    
    schema = StructType([])`
    empty = sqlContext.createDataFrame(sc.emptyRDD(), schema)
    

    이 해결 방법입니다. 이 블록을 사용한 후에도 문제가 해결되었습니다. 주 - SQLContext가 아닌 HiveContext에서 sqlContext를 인스턴스화하는 경우에만 발생합니다.

  7. ==============================

    7.sqlContext._get_hive_ctx ()를 실행하여이 오류가 발생했습니다. 이것은 초기에 파이프 라인 된 RDD를 데이터 프레임에로드하려고 시도했기 때문에 발생했습니다 나는 오류가있다. 예외 : ( "하이브로 Spark를 빌드해야하며, 'SPARK_HIVE = true'를 내보내고 build / sbt 어셈블리를 실행하십시오.), Py4JJavaError (None.org.apache.spark.sql.hive.HiveContext를 호출하는 동안 오류가 발생했습니다. \ n ', JavaObject id = o29)) 그래서 당신은 그것을 재건하기 전에 이것을 실행할 수 있습니다.하지만 저는 이것을보고 한 다른 사람들이 그들을 도와주지 않았 음을 알았습니다.

    sqlContext._get_hive_ctx ()를 실행하여이 오류가 발생했습니다. 이것은 초기에 파이프 라인 된 RDD를 데이터 프레임에로드하려고 시도했기 때문에 발생했습니다 나는 오류가있다. 예외 : ( "하이브로 Spark를 빌드해야하며, 'SPARK_HIVE = true'를 내보내고 build / sbt 어셈블리를 실행하십시오.), Py4JJavaError (None.org.apache.spark.sql.hive.HiveContext를 호출하는 동안 오류가 발생했습니다. \ n ', JavaObject id = o29)) 그래서 당신은 그것을 재건하기 전에 이것을 실행할 수 있습니다.하지만 저는 이것을보고 한 다른 사람들이 그들을 도와주지 않았 음을 알았습니다.

  8. ==============================

    8.오류는 여러 개의 불꽃 껍질 때문에 당신이 동일한 노드에서 실행하려고하거나 시스템 고장으로 인해 시스템 종료로 인해 셧다운이 제대로 종료되지 않았기 때문에 발생했습니다. 어떤 이유로 든 프로세스 ID를 찾아서 죽이면됩니다. 우리

    오류는 여러 개의 불꽃 껍질 때문에 당신이 동일한 노드에서 실행하려고하거나 시스템 고장으로 인해 시스템 종료로 인해 셧다운이 제대로 종료되지 않았기 때문에 발생했습니다. 어떤 이유로 든 프로세스 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
    
  9. ==============================

    9.당신의 Derby metastore_db가 다른 스레드에 의해 액세스되는 곳을 찾기가 매우 어렵습니다. 프로세스를 찾을 수 있다면 kill 명령을 사용하여 kill 할 수 있습니다.

    당신의 Derby metastore_db가 다른 스레드에 의해 액세스되는 곳을 찾기가 매우 어렵습니다. 프로세스를 찾을 수 있다면 kill 명령을 사용하여 kill 할 수 있습니다.

    시스템을 재시작하는 최상의 솔루션.

  10. from https://stackoverflow.com/questions/34465516/caused-by-error-xsdb6-another-instance-of-derby-may-have-already-booted-the-da by cc-by-sa and MIT license