前言
在部署mdx-for-kylin的过程中,遇到了mdx-for-kylin的部分错误,如mysql的connector驱动包、kylin-jdbc驱动包的问题。
mdx软件的获取地址为:
https://github.com/Kyligence/mdx-kylin/issues/1
软件名称:mdx-for-kylin-1.0.0-beta.tar.gz
Bug原因
在mdx-for-kylin根目录下的semantic-mdx中缺少lib目录及相关的驱动jar包,正常的目录结构如下。
# tree -d mdx-for-kylin-1.0.0-beta
mdx-for-kylin-1.0.0-beta
├── bin
├── conf
├── logs
├── semantic-mdx
│ ├── diag_dump
│ ├── lib
│ ├── logs
│ ├── public
│ │ └── WEB-INF
│ │ └── schema
│ └── scripts
└── work
└── Tomcat
└── localhost
└── ROOT
15 directories
可以正常的目录结构下是有lib目录的,在目录下应该有两个jar包
kylin-jdbc-4.0.0-SNAPSHOT.jar
mysql-connector-java-5.1.48.jar
Bug处理
mysql驱动jar包的问题很好处理,并且jar包也比较好找,文档中不再阐述,如有问题,可以评论中讨论,空闲的时候第一时间回复。
下面的错误是因为缺少kylin-jdbc-4.0.0-SNAPSHOT.jar包导致
[MDX-02020015] [PARSE_ERROR]mondrian.olap.MondrianException: Internal error: Error while creating SQL connection: Jdbc=jdbc:kylin://localhost:7070/learn_kylin; JdbcUser=ADMIN
Internal error: Error while creating SQL connection: Jdbc=jdbc:kylin://localhost:7070/learn_kylin; JdbcUser=ADMIN
No suitable driver found for jdbc:kylin://localhost:7070/learn_kylin
io.kylin.mdx.insight.common.SemanticException: [PARSE_ERROR]mondrian.olap.MondrianException: Internal error: Error while creating SQL connection: Jdbc=jdbc:kylin://localhost:7070/learn_kylin; JdbcUser=ADMIN
Internal error: Error while creating SQL connection: Jdbc=jdbc:kylin://localhost:7070/learn_kylin; JdbcUser=ADMIN
No suitable driver found for jdbc:kylin://localhost:7070/learn_kylin
at io.kylin.mdx.insight.server.service.BatchDatasetService.checkConnectDataset(BatchDatasetService.java:707)
at io.kylin.mdx.insight.server.service.BatchDatasetService$$FastClassBySpringCGLIB$$cc138b09.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367)
...
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
解决方法:
将jar包放入到容器的”/home/admin/mdx-for-kylin-1.0.0-beta/semantic-mdx/lib"路径中,重启容器即可解决。
[root@5db40678182a bin]# pwd
/home/admin/mdx-for-kylin-1.0.0-beta/bin
[root@5db40678182a bin]# ./mdx.sh restart
Working directory: /home/admin/mdx-for-kylin-1.0.0-beta
MDX context path: /
Stop Kylin MDX...
.
Semantic service has been stopped, pid=7843.
Kylin MDX is now stopped.
Start Kylin MDX...
MDX_HOME=/home/admin/mdx-for-kylin-1.0.0-beta
MDX_CONF=/home/admin/mdx-for-kylin-1.0.0-beta/conf
JAVA_HOME has been set,it's /home/admin/jdk1.8.0_141
JAVA=/home/admin/jdk1.8.0_141/bin/java
Use database: mysql
JVM memory minimum set as : -Xms2g
JVM memory maximum set as : -Xmx2g
Use /home/admin/mdx-for-kylin-1.0.0-beta/conf/log4j2.xml
Time zone is specified as: GMT+8:00
Semantic service is starting at port 7080, please check the log at logs/semantic.log.
...........
Kylin MDX is started. Now you can visit http://0.0.0.0:7080/ to explore.
Starting syncing metadata...
Successfully starting syncing metadata...
重启后再次操作数据集时需要注意,之前创建的时候虽然失败了,但数据集依然会被创建,回到“数据集”菜单,点击编辑,一直下一步即可出现下图中的成功信息。