(本文档仅供参考)
现象一
1、预览报错,提示找不到驱动:Caused by: java. lang. ClassNotFoundException: org. apache .hive. jdbc. HiveDriver
如下:
2、使用模型做的仪表盘都报错驱动问题,重启olap清空系统缓存 都操作了,都不行。
errorMessageMondrian Error:Internal error: Error
while
looking up jdbeDriver!
errorStackTrace=mondrian.olap.MondrianException:Mondrian
Error:Internal error: Error
while
looking up jdbcDriver!
at
mondrian.resource.MondrianResource$DefO.ex(MondrianResource.
java:
1002
)
at mondrian.olap.Util.newlnternal(Util.java:
2545
)
mondrian.rolap.RolapConnection.createDataSource(RolapConnectio
解决方案
上述报错的栈信息包含mondrian,则说明是olap缺少驱动。需要根据使用的具体版本添加对应驱动至olap引擎中。
添加方式:如何向Smartbi中添加数据库驱动jar包—V9及以上版本
若有添加,需确认网络,或者数据库有没有黑白名单限制,有时候是防火墙导致的,数据库端口在olap服务器上不通。
现象二
已经将hive驱动添加至olap的动态加载目录,数据模型预览仍然报错:You have more than one version of 'org.apache.commons.logging.Log' visible, which is not allowed.
解决方案
报错是因为需要添加的驱动版本为:inceptor-sdk-transwarp-6.1.0-SNAPSHOT_xxxxx,高于5.1.2版本,因此需要将驱动内置到war包以及olap引擎中,并修改数据源中的驱动路径为系统内置:
如上述原因所说,因类冲突,无法放在动态加载目录下,需要将驱动内置。
①、需要将驱动内置到war包中,添加方式可参考:如何向Smartbi中添加数据库驱动jar包—V9及以上版本
②、需要将驱动内置到olap的war中,war包内置在SmartbiOLAPServer.jar中,可以用压缩工具打开该jar包,将驱动添加后重新启动olap,具体位置如下:
注意:如olap需要进行版本更新,则需要重新将驱动添加到要更新的jar包中,再启动!
双击打开smartbiolap.war,进到如下目录中,将驱动放在该目录下,保存,重启olap:
关于olap读取驱动说明
目前olap的驱动分为内置和外置,根据数据源设置的读取驱动的位置为主。
1、数据源设置来源产品内置
如下图,当数据源选择为系统内置,则olap获取驱动时也是获取的olap内置的驱动,因此如上现象二,需要把驱动放到smartbi.war里面的同时也要放到smartbiolap.war中。
2、数据源设置来源自定义
如下图,会从配置的外部驱动类存放路径中读取对应驱动,如配置了开启同步,可以理解为,会通过配置的同步地址下载对应的驱动,放到外部驱动类存放路径中。