背景
公司springboot 版本终于从老古董2.0.0.release 升到2.3.12版本了,应用启动、系统登陆都正常,但在回归验证hive时,spark sql 操作hive相关的功能却用不了。
经过一番排查和解决,最终总结如下。
Q1:数据表预览报错,janino包冲突
Caused by: java.lang.ClassNotFoundException: org.codehaus.janino.InternalCompilerException
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
原因:springboot 从2.0.0.release升级至 2.3.12.release后,janino 默认升到3.1.4
解决办法:janino版本号降至3.0.16.
Q2: 数据表预览报错,Jackson Databind 包冲突
2023-04-13 15:19:10,958 ERROR 84484 --- [http-nio-8082-exec-6] [cn.xxx.zzz.common.util.util.LogUtil:36] : [0] ?????
org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1055)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
……
at cn.xxx.zzz.resource.manage.biz.service.impl.DataTableConfigServiceImpl.dataPreview(DataTableConfigServiceImpl.java:538)
at cn.xxx.zzz.yyy.app.biz.controller.resource.DataTableConfigController.dataPreview(DataTableConfigController.java:390)
at cn.xxx.zzz.yyy.app.biz.controller.resource.DataTableConfigController$$FastClassBySpringCGLIB$$5289b62e.invoke(<generated>)
……
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
……
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
... 41 common frames omitted
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.11.4 requires Jackson Databind version >= 2.11.0 and < 2.12.0
at com.fasterxml.jackson.module.scala.JacksonModule$class.setupModule(JacksonModule.scala:61)
at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)
at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:751)
at org.apache.spark.rdd.RDDOperationScope$.<init>(RDDOperationScope.scala:82)
at org.apache.spark.rdd.RDDOperationScope$.<clinit>(RDDOperationScope.scala)
... 81 common frames omitted
原因:springboot 从2.0.0.release升级至 2.3.12.release后,jackson-module-scala_2.11 默认升到2.11.0版本了。
解决方法:降低jackson-module-scala_2.11版本号至2.9.4版本
<!-- spark sql 读取hive报错,仅支持2.9.4版本及以下 -->
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-scala_2.11</artifactId>
<version>2.9.4</version>
</dependency>
对比升级前和升级后jar包列表,发现疑似包冲突证据:
将包版本降低后,重新运行验证,hive访问正常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)