以前一直正常使用的hadoop+hive集群,在使用spark-sql 连接hive后,hive可正常启动但无法正常查询数据

此时,查看进程都是正常的,hadoop集群正常,hive进程也是正常的


“ SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient ”
分析这个报错原因,知这是因为hive的metastore服务未能启动成功导致的,故新开一个terminal,尝试手动启动 ,启动命令“ ./bin/hive --service metastore & ”

发现“MetaException(message:Hive Schema version 2.3.0 does not match metastore’s schema version 1.2.0 Metastore is not upgraded or corrupt)” ,发现是schema版本不一致导致metastore 服务启动失败
然后参阅网上的资料发现在hive的元数据里有一张表VERSION,其SCHEMA_VERSION值已经被修改为1.2.0 ,此内容与hive安装版本里的schema不一致,故启动是失败

此时因前面报错信息里说是2.3.0,所以将SCHEMA_VERSION更新成2.3.0,切勿随意填写或用hive的版本
update VERSION set SCHEMA_VERSION = ‘2.3.0’ where VER_ID = 1 ;

hive可启动成功,并且成功读取到数据

这个集群之前只安装了hive,一直正常使用,近段时间按照部署里SparkSQL,并且使用sparkSQL连接了hive元数据,即在sparkSQL里读取hive表并跑任务,此时spark会修改元数据里VERSION 表的版本信息,再启动hive,就会启动metastore服务失败,即本文所述的问题。
参考了:
https://www.it610.com/article/1297546101867487232.htm
https://blog.csdn.net/qq_39579408/article/details/86526757