> 文章列表 > 【总结】Springboot 从2.0.0升级至2.3.12版本hive使用报错问题解决

【总结】Springboot 从2.0.0升级至2.3.12版本hive使用报错问题解决

【总结】Springboot 从2.0.0升级至2.3.12版本hive使用报错问题解决

背景

公司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.tongdun.yuntu.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 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:598)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:701)

……
at cn.tongdun.yuntu.resource.manage.biz.service.impl.DataTableConfigServiceImpl.dataPreview(DataTableConfigServiceImpl.java:538)
at cn.tongdun.yuntu.qiming.app.biz.controller.resource.DataTableConfigController.dataPreview(DataTableConfigController.java:390)
at cn.tongdun.yuntu.qiming.app.biz.controller.resource.DataTableConfigControllerFastClassBySpringCGLIBFastClassBySpringCGLIBFastClassBySpringCGLIB5289b62e.invoke()
……
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.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
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.JacksonModuleclass.setupModule(JacksonModule.scala:61)atcom.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)atcom.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:751)atorg.apache.spark.rdd.RDDOperationScopeclass.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.RDDOperationScopeclass.setupModule(JacksonModule.scala:61)atcom.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)atcom.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:751)atorg.apache.spark.rdd.RDDOperationScope.(RDDOperationScope.scala:82)
at org.apache.spark.rdd.RDDOperationScope$.(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版本

com.fasterxml.jackson.module jackson-module-scala_2.11 2.9.4 对比升级前和升级后jar包列表,发现疑似包冲突证据: ![在这里插入图片描述](https://img-blog.csdnimg.cn/a0cbdc8c26264f739fa3973c30d09f40.png) 将包版本降低后,重新运行验证,hive访问正常。