升级ambari spark至spark3.0.2 bad substitution 和scala.MatchError: x.x (of class java.lang.String)错误解决

场景描述:由于业务要求想要使用Hudi,而hudi需要spark2.4.5+版本,canal+kafka+sss+hudi
当前版本:

hdp3.1.4
hadoop 3.1.0
hive 3.1.0
spark 2.3.0
scala 2.11.8

原计划升级ambari,但发现ambari2.7.5spark版本为2.3.3(好像)不满足要求
后决定在现有基础上升级spark

1. 升级scala

官网下载 scala.2.12.10
在这里插入图片描述
解压到linux上并配置环境变量,scala -version 查看无误后继续

2. 升级spark

部署集群过程简单不赘述

原计划下载升级spark2.4.8
遇到如下问题

问题 1. yarn使用的包为1.9低版本,与spark2.4.8解压后的jars目录下的包不匹配,出现: bad substitution
解决方法:
  1. 将新spark解压jars目录下jersey-client-xx.jar 移动或改名
  2. 将以下包find / -name 从机器上找出来放到新spark的jars目录下
    在这里插入图片描述
  3. 在spark-defaults.conf文件最后增加两行(针对hdp升级)
    spark.driver.extraJavaOptions -Dhdp.version=3.1.4.0-315
    spark.yarn.am.extraJavaOptions -Dhdp.version=3.1.4.0-315
    3.1.4.0-315为hdp版本,可以看你的usr/hdp/xxx/此目录

spark-shell没有问题

问题 2 执行spark-sql报错 scala.MatchError: x.x (of class java.lang.String)
Exception in thread "main" scala.MatchError: 3.0 (of class java.lang.String)
    at org.apache.spark.sql.hive.client.IsolatedClientLoader$.hiveVersion(IsolatedClientLoader.scala:91)

由于hive版本为3.1.0
查看原始的spark-default.conf后发现 一行spark.sql.hive.metastore.version 3.0
经过本人多次更改scala版本\ 此参数值后还是报错
查看spark 2.4.x源码后发现只解析能解析如下hive版本参数
在这里插入图片描述
想要解决此问题需要自己修改源码编译spark

或者升级spark3.x
在这里插入图片描述

本人下载spark3.0.2后也是解决此问题

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
这个错误是关于 Hadoop YARN 中的辅助服务 (Auxiliary Services) 初始化失败的问题。根据错误信息,发生了两个异常:`java.lang.RuntimeException` 和 `java.lang.ClassNotFoundException`。 首先,`java.lang.RuntimeException` 表示在初始化辅助服务时出现了一个运行时异常。其次,`java.lang.ClassNotFoundException` 表示找不到类 `org.apache.spark.network.yarn.YarnShuffleService`。 根据错误信息,可能是由于缺少 Spark Shuffle 服务的类所导致的。Spark Shuffle 服务是 Spark 在 YARN 上执行时用于数据传输和共享的组件。 要解决这个问题,您可以尝试以下几个步骤: 1. 确保您的环境中已正确安装和配置了 Spark,并且 Spark 相关的 JAR 文件在您的应用程序或 Hadoop 的类路径中可用。 2. 检查您的配置文件,确保在 YARN 的配置中包含了正确的 Spark Shuffle 服务配置。您可以参考 Spark 和 Hadoop 的官方文档以了解正确的配置方式。 3. 确保在 YARN 的 `yarn-site.xml` 配置文件中正确设置了 Spark Shuffle 服务的类路径。您可以检查 `yarn.nodemanager.aux-services` 和 `yarn.nodemanager.aux-services.spark_shuffle.class` 这两个属性的设置。 4. 如果您使用的是自定义的 Spark Shuffle 服务实现,确保相关的 JAR 文件已正确放置在 YARN 的类路径中。 5. 如果您使用的是 Hadoop 集群管理工具(如 Ambari、Cloudera Manager 等),请确保您的工具已正确配置 Spark Shuffle 服务。 请注意,根据您的具体环境和配置,解决此问题可能需要进一步调查和调试。您还可以查看 Hadoop 和 Spark 的官方文档、社区支持资源以及相关错误日志,以获取更多关于此错误的详细信息和解决方案。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值