【问题标题】:message:Hive Schema version 1.2.0 does not match metastore's schema version 2.1.0 Metastore is not upgraded or corrupt消息:Hive Schema 版本 1.2.0 与 Metastore 的模式版本 2.1.0 不匹配 Metastore 未升级或损坏
【发布时间】:2017-11-28 03:35:25
【问题描述】:

环境:spark2.11 hive2.2 hadoop2.8.2

hive shell 运行成功!并且没有错误或警告。 但是运行application.sh时,启动失败

/usr/local/spark/bin/spark-submit \
--class cn.spark.sql.Demo \
--num-executors 3 \
--driver-memory 512m \
--executor-memory 512m \
--executor-cores 3 \
--files /usr/local/hive/conf/hive-site.xml \
--driver-class-path /usr/local/hive/lib/mysql-connector-java.jar \
/usr/local/java/sql/sparkstudyjava.jar \

及错误提示:

Exception in thread "main" java.lang.IllegalArgumentException: Error while 
instantiating 'org.apache.spark.sql.hive.HiveSessionState':
...
Caused by: java.lang.IllegalArgumentException: Error while instantiating 
'org.apache.spark.sql.hive.HiveExternalCatalog':
...
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: Unable to 
instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
...
Caused by: java.lang.RuntimeException: Unable to instantiate 
org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
...
Caused by: MetaException(message:Hive Schema version 1.2.0 does not match 
metastore's schema version 2.1.0 Metastore is not upgraded or corrupt)
...

我尝试了很多方法来解决这个错误,但仍然会出现错误。 如何解决?

【问题讨论】:

    标签: hive apache-spark-sql


    【解决方案1】:

    可能 hive 是指另一个版本的 hive(配置不同)。 执行以下命令并查看输出是否与 /usr/local/hive 不同。

    $which hive
    

    如果两者是相同的 hive 目录,请在 hive-site.xml 中添加以下属性。

    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    

    【讨论】:

    • $which hive /usr/local/hive/bin/hive
    • 更新了我在你的场景中的评论。
    • spark2.x 单独使用 hive1.2,如果要使用安装的 hive 版本,请将 /hive/conf/hive-site.xml 移动到 /spark/conf/,并在 hive 中设置 thrift- site.xml,它会工作
    • 感谢分享。但即使在我将 $HIVE_HOME/conf/hive-site.xml 移动到 $SPARK_HOME/conf 之后,我也遇到了类似的错误。这解决了我的问题。
    【解决方案2】:

    有时 spark 中的 hive jar 可能与安装的 hive 版本不同,为了处理这种情况,您可以通过 conf 参数中的 jars 和版本来提交 spark 作业 例如。 --conf spark.sql.hive.metastore.version=2.3.0 --conf spark.sql.hive.metastore.jars=/home/apache-hive-2.3.6-bin/lib/*

    【讨论】:

      【解决方案3】:

      由于 Spark 和 Hive 版本不匹配,我遇到了类似的问题。Spark 2.0 指向 1.2.0 Hive 版本,而我使用的默认 Hive 是 0.14.0。因此,通过在启动 pyspark 时传递版本将解决问题。

      pyspark --master yarn --num-executors 1 --executor-memory 512M --conf spark.sql.hive.metastore.version=0.14.0 --conf spark.sql.hive.metastore.jars=/ usr/local/hive/apache-hive-0.14.0-bin/*

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-23
        • 2014-08-27
        • 2017-06-28
        • 2014-02-22
        • 1970-01-01
        • 2016-05-15
        • 1970-01-01
        相关资源
        最近更新 更多