zoukankan      html  css  js  c++  java
  • mondrian 4.7 源码部署

    mondrian是一个开源的数据分析工程, 网上有关mondrian3.X的源码部署比较多, 有关4.X的部署较少. 目前官方推荐使用的时mondrian3.7的修订版, 可以再github上下载到最近更新维护的mondrian-master, 下载下来后基本上只需要按部就班的使用maven build一下就可以正常使用了, 如有问题可以根据提示进行一下排查就OK了. mondrian4.7目前是一个beta版, 相关的部署文档较少, 笔者也是痛苦的部署了很多次, 各方请教才部署成功的, 下面就部署的一些坑进行相关记录.

    1. 环境配置

      ant 1.9.11

      maven 3.3.9

      git 2.17.0

      jdk 1.8.0_91

    可以在GitHub上下载mondrian4.7.0.11的源码  https://github.com/pentaho/mondrian/tree/4.7.0.11

    建议在 http://sourceforge.net/projects/mondrian/ 上也下载一份相应的源码, 此处的源码是.jar结尾的

    2. 源码编译

    在github上下载的源码和在源码在编译之前是会缺失一部分java文件的. 因此首先需对工程进行编译.

    2.1 ant编译环境

    将github上下载的源码解压缩, 解压之后在跟你目录下运行ant, 如下图所示. 由于ant编译过程中需要时使用的git, 因此我们需要安装配置git的环境.

     

    在file:///C:/Users/Administrator/Downloads/mondrian-4.7.0.11/mondrian-4.7.0.11/doc/developer.html中提供了开发者源码编译步骤. 可以作为参考.

     如果编译的过程中出现类似如下错误, 则可以根据提示去对应网址(https://nexus.pentaho.org/content/groups/omni/), 下载相应的jar包, 放在{user}/.subfloor/对应的目录中:

    下载后的目录如下图所示:

     

    ant环境配置好后, 继续执行ant命令, 会出现如下图所示的提示, 则表示ant编译成功, 缺失的类也生成了.

    2.2 maven环境配置

    可以将(https://nexus.pentaho.org/content/groups/omni/)配置为maven中央仓库, mondrian大部分以来的jar包都可以在此处找到. 不过笔者该仓库配置没有生效, 不知道是不是应为https的原因. 对于无法自动下载的jar包, 笔者手动下载安装到maven仓库中了. 下载过的jar包如下图所示.

    将jar包手动install到本地仓库的命令如下:

    mvn install:install-file -Dfile=C:UsersAdministratorDownloadsjmxri-1.2.1.jar -DgroupId=com.sun.jmx -DartifactId=jmxri -Dversion=1.2.1 -Dpackaging=jar

    其中: Dfile: 指定jar所在路径

      DgroupId: 指定jar包对应的groupId

      DartiactId: 指定jar包的artifactId

      Dversion: 指定jar包的版本信息

      Dpackaging: 指定打包的形式, 此处为jar

    3 工程导入eclipse

    将经过ant编译后的工程导入eclipse中, eclipse一般会制动识别指定的source所在的包, 如果无法识别或者是识别后无法将java文件自动编译成.class文件的话, 则在buildpath中手动添加source或将之前的添加的删除然后手动添加一遍, 并指定编译后class的存放路径.

    由于ant编译时, 只编译的部分类, 因此在eclipse中可以在run as-->maven bulid.. 中使用install -DskipTests -X命令来编译所有java文件(test除外).

     初始导入install后的工程如下图所示, java文件中'空心J'表示java文件未编译:

    在build path中将source移除后重新导入, 并制定变异后class的存放地址, 即可自动编译java文件

    mondrian编译打包完成后, 就可以进行相应的测试了

    4 mondrian源码测试:

    mondrian本身自带demo, 在demo中包含一套完整的测试时所需要的schema和sql建表语句. 测试类如下所示:

    package com.rodge;

    import java.io.PrintWriter;
    import mondrian.olap.Connection;
    import mondrian.olap.DriverManager;
    import mondrian.olap.Query;
    import mondrian.olap.Result;

    public class TestMondrian {

    public static void main(String[] args) {
    String str = "Provider=mondrian;"+
    "Jdbc=jdbc:mysql://localhost:3306/foodmart?user=root&password=123456;"+
    "Catalog=file:///F:/mondrian/mondrian-4.7.0.11/demo/FoodMart.mondrian.xml;"+
    "JdbcDrivers=com.mysql.jdbc.Driver; ";
    Connection conn = DriverManager.getConnection(str, null);
    // 定义查询语句,遵循mdx语法
    String queryStr = "select {[Measures].[Unit Sales]} on columns from Sales";
    // 利用connection生成一个Query对象
    Query query = conn.parseQuery(queryStr);
    @SuppressWarnings("deprecation")
    // 执行查询得到结果:
    Result result = conn.execute(query);
    // 控制台打印结果
    PrintWriter pw = new PrintWriter(System.out);
    result.print(pw);
    pw.flush();
    System.out.println("successful!");

    }

    }

    foodmart的数据创建将在后面介绍, 当数据库配置完成后, 运行该测试类, 会出现如下错误:

    这是因为, 在mondrian.resource.MondrianResource中, 找不到MondrianResource.propertis配置文件. 该配置文件可以在mondrian-4.7.0.0-12.jarmondrian esource 中获取, mondrian-4.7.0.0-12.jar实在(https://sourceforge.net/projects/mondrian/files/mondrian/mondrian-4.7.0/mondrian-4.7.0.0-12-sources.jar)中下载得到的. 将MondrianResource.propertis配置文件拷贝到eclipse中/mondrian/src/main/java/mondrian/resource/MondrianResource.properties中即可.

     

    5 测试foodmart数据库的配置

     foodmart测试数据库的配置在网上有很多版本, 但是笔者测试后, 发现都需要进行相关改动, 位置, 笔者将数据库配置的步骤进行了整理.

    有序mondrian4.7中不包含foodmart的相关信息的配置, 改配置信息需要在mondrian-3.7.0.0-752.zip中寻找, 下载地址为:ttp://sourceforge.net/projects/mondrian/files/mondrian/mondrian-3.7.0/mondrian-3.7.0.0-752.zip

    下载下来后, 解压, 在mondrian-3.7.0.0-752.ziplib目录中, 将jpivot.war拷贝到tomcat/webapps并重命名为mondrian.war, 解压该war包, 并将mysql的链接类拷贝到tomcat/lib中, 

    进入E:applicationapache-tomcat-7.0.65webappsmondrianWEB-INFlib目录, 执行如下命令, 即可创建foodmark需要的表结构, 当然, 前提是数据中库拥有foodmart这个数据库.

    java -cp "E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/mondrian.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/log4j-1.2.8.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/commons-logging-1.0.4.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/eigenbase-resgen.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/eigenbase-xom.jar;E:/application/apache-tomcat-7.0.65/webapps/mondrian/WEB-INF/lib/eigenbase-properties.jar;E:/application/apache-tomcat-7.0.65/lib/mysql-connector-java-5.1.31.jar" mondrian.test.loader.MondrianFoodMartLoader -verbose -tables -data -indexes -jdbcDrivers=com.mysql.jdbc.Driver -inputFile="C:/Users/Administrator/Downloads/demo/FoodMartCreateData/FoodMartCreateData.sql" -outputJdbcURL="jdbc:mysql://localhost:3306/foodmart?user=root&password=123456"

  • 相关阅读:
    CF1260F
    牛客挑战赛34 A~E
    CSP-S2019游记&拆塔记
    6424. 【NOIP2019模拟2019.11.13】我的订书机之恋
    CF1257E/F
    6423. 【NOIP2019模拟11.11】画
    1222/2516. Kup
    Comet OJ
    浅析CSS定位
    css文字颜色渐变的3种实现
  • 原文地址:https://www.cnblogs.com/rodge-run/p/9000454.html
Copyright © 2011-2022 走看看