使用spark-sql报错 “Metastore contains multiple versions”

1、背景:
进入spark集群,cd/spark,执bin/spark-sql,报错


image.png

2、解决方法
2.1、是hive元数据的问题,进入spark/conf/hive-site.xml,找到mysql的配置信息
2.2、进入mysql,切换到hive所使用的DB
2.3、 select * from VERSION;


image.png

2.4、保留第一条记录,其他记录全部删除
delete from VERSION where VER_ID != 1;
3、问题原因

异常是因为在启动hive命令时会检查hive源数据中有一张VERSION表,如果元数据版本信息获取不到(原因可能是元数据库异常||网络异常||短期内作业量较多操作都会造成查询不到版本信息),这种情况下会判断hive.metastore.schema.verification属性是true还是false,为true时直接抛出MetaException,为false时打出warn警告然后插入一条version数据(这种情况下会造成多条version记录后面的作业会受影响)
4、彻底解决
4.1、hive安装好后将hive-site.xml中hive.metastore.schema.verification设置为true,version获取不到时报出异常,不去插入version信息,这样本作业执行失败不会影响下游作业;
4.2开启metastore服务,hive统一连接metastore,由守护进程启动metastore,避免大量hive脚本初始化元数据信息时获取不到版本信息;
4.3、优化hive元数据库;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容