You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Apache Spark 2.2.0升级Hive Metastore后无法连接及spark-shell报错

Spark 2.2.0无法连接Hive Metastore 2.3.0的解决方案

从你提供的错误日志来看,核心问题是Spark 2.2.0的内置Hive客户端没有适配Hive 2.3.0版本——具体报错scala.MatchError: 2.3.0就是因为Spark 2.2.0的Hive版本匹配逻辑里压根没有2.3.0这个选项,导致实例化Hive会话构建器失败。

下面是几个可行的解决方案,你可以根据实际情况选择:

方案1:降级Hive Metastore到兼容版本

Spark 2.2.0官方明确支持的Hive Metastore版本范围是1.2.1 ~ 2.1.0,如果业务允许的话,把Hive Metastore降级到这个区间内的稳定版本(比如2.1.0),是最省心的解决方式,不需要修改Spark的任何配置或代码。

方案2:重新编译Spark以支持Hive 2.3.0

如果不能降级Hive,那就需要重新编译Spark源码,指定适配Hive 2.3.0:

  1. 下载Spark 2.2.0的源代码包并解压
  2. 进入源码目录,执行编译命令(根据你的Hadoop版本调整-Phadoop-x.x参数,这里以Hadoop 2.7为例):
    ./build/mvn -Pyarn -Phadoop-2.7 -Phive-2.3 -Dhive.version=2.3.0 -DskipTests clean package
    
  3. 编译完成后,用生成的新Spark安装包替换原来的Spark环境即可。

方案3:临时启用Hive Metastore兼容模式(应急方案)

这个方案不能保证解决所有问题,但可以作为临时应急手段:
在Hive Metastore的配置文件hive-site.xml中添加以下配置,关闭客户端能力检查:

<property>
  <name>hive.metastore.client.capability.check</name>
  <value>false</value>
</property>

添加后重启Hive Metastore服务,再尝试启动spark-shell。不过这个方案可能会导致部分Hive高级功能无法正常工作,只建议作为临时过渡使用。

内容的提问来源于stack exchange,提问作者chaithanyaa mallamla

火山引擎 最新活动